PDA

View Full Version : .jar erstellen



ennsman
19-11-09, 15:09
Hallo,

Kann mir jemand mal grob erklären wie ich aus folgendem java-Sourcecode ein ausführbares Objekt erzeuge?

http://publib.boulder.ibm.com/infocenter/iadthelp/v7r0/index.jsp?topic=/com.ibm.etools.iseries.toolbox.doc/htmldocumentfoexmpl.htm

Vielen Dank
--ennsman--

Fuerchau
19-11-09, 15:39
Starte die QSH und verwende das Kommando "javac". Dieses erstellt dir die .class die du auch ohne jar ausführen kannst.
Eine jar funktioniert wie ein Verzeichnisbaum und ist für eine einzelne Klasse nicht erforderlich.

CLASSPATH ist nur korrekt zu setzen.

ennsman
20-11-09, 10:16
hallo,

ich habe jetzt folgendes probiert, hier ein kleiner Auszug meines Kompilierungsversuchs:


javac -classpath /QIBM/ProdData/HTTP/Public/jt400/lib processXslFo.java
processXslFo.java:33: package com.ibm.xsl.composer.framework does not exist
import com.ibm.xsl.composer.framework.Context; ^ processXslFo.java:35: package com.ibm.as400.util.reportwriter.pdfwriter does not exist
import com.ibm.as400.util.reportwriter.pdfwriter.PDFConte xt; ^
processXslFo.java:36: package com.ibm.as400.util.reportwriter.processor does not exist
import com.ibm.as400.util.reportwriter.processor.XSLRepor tProcessor; ^
processXslFo.java:83: cannot resolve symbol symbol : class PDFContext location: class ProcessXslFo
PDFContext pdfContext = new PDFContext(fout, pageFormat);
....usw.....



Die lt. Source erforderlichen jars befinden sich auch in dem von mir angegebenen classpath.

Woran scheitert die erstellung?

Vielen Dank für eure Geduld mit einem völligen Java-Rookie

Gerhard.

Fuerchau
20-11-09, 11:23
Das ist das Problem mit den jar's.
Diese sind wie Verzeichnisse zu sehen und müssen daher in den CLASSPATH mit aufgenommen werden.

Die Imports beziehen sich nämlich auf Klassen innerhalb der jar's.

Also CLASSPATH=Verz1:jar1:jar2...

ennsman
20-11-09, 13:19
wenn ich das richtig Verstanden habe müsste der Befehl zum Erstellen dann so aussehen:


javac -classpath /QIBM/ProdData/HTTP/Public/jt400/lib:composer.jar:outputwriters.jar:reportwriter.ja r:x4j400.jar:xslparser.jar ProcessXslFo.java

Leider bekomme ich aber die gleichen Fehlermeldungen wie schon oben beschrieben.

Vielen Dank
Gerhard

Fuerchau
20-11-09, 13:35
Wo soll javac denn die .jar finden ?
Du musst leider hier den kompletten absoluten Pfad der Jar-Datei mit angeben.

ennsman
23-11-09, 11:47
Hm, irgendwo ist da noch der Wurm drin...

Ich habe jetzt beim classpath für jede .jar den kompletten pfad eingegeben, der Befehl sieht dann so aus:
===> javac -classpath /QIBM/ProdData/HTTP/Public/jt400/lib:composer.jar:/QIBM/ProdData/HTTP/Public/jt400/lib:outputwriters.jar:/QIB
M/ProdData/HTTP/Public/jt400/lib:reportwriter.jar:/QIBM/ProdData/HTTP/Public/jt400/lib:x4j400.jar:/QIBM/ProdData/HTTP/Public/jt400/l
ib:xslparser.jar ProcessXslFo.java

Die Fehlermeldungen bleiben aber die gleichen.

Fuerchau
23-11-09, 14:46
Du hast zwischen jar und Pfad einen ":" an Stelle eines "/" verwendet!

Eine jar ist wie ein Verzeichnis mit Unterverzeichnissen zu sehen.

ennsman
23-11-09, 14:53
Ah, da war noch der Hund begraben...

Jedenfalls vielen Dank, *.class erstellen hat geklappt!

Danke und Gruss
Gerhard

Fuerchau
23-11-09, 15:41
Bedenke, dass zum Aufruf der class wiederum der Classpath auf die jar's benötigt wird.