mal wieder Prob mit Jar-File

Status
Nicht offen für weitere Antworten.

Gayson

Bekanntes Mitglied
Hallo!

Ich versuche gerade, mein Programm in ein Jar zu packen. Nur ist leider diese Jar nicht auf anderen PCs ausführbar, da tritt jedesmal "Could not find the MainClass" auf.

Manifest-Datei SVCD2VCD.mf:
Code:
CLASS-PATH: .
MAIN-CLASS: SVCD2VCD

Ordnerstrktur:
SVCD2VCD.class
SVCD2VCD$go.class
SVCD2VCD$1.class
SVCD2VCD$2.class
settings.xml
project.tbe
fhlaf_1.0b2_bin.jar //Look&Feel
jdom.jar

Kommandozeile:
jar -cvfm SVCD2VCD.jar SVCD2VCD.mf *.*
 
Mach mal ein jar -tf SVCD2VCD.jar, damit kannst du dir den Inhalt des Jars anzeigen lassen.
Heißt das Manifest auch wiklich MANIFEST.MF?
Benutzt du Packages? Wenn ja dann mußt du diese auch im Parameter Main-Class mitangeben. Dein Manifest sollte ausserdem so aussehen:
Code:
Main-Class: SVCD2VCD
 
Mach mal ein jar -tf SVCD2VCD.jar, damit kannst du dir den Inhalt des Jars anzeigen lassen.
Da taucht natürlich alles auf, was ich auch per Befehlszeile reingetan habe...

Heißt das Manifest auch wiklich MANIFEST.MF?
Ne, es hieß SVCD2VCD.mf, aber habs jetzt in MANIFEST.MF, ich dachte, das wär egal...

Benutzt du Packages? Wenn ja dann mußt du diese auch im Parameter Main-Class mitangeben.
Ja, benutz ich. Z.b. das Look&Feel fhlaf_1.0b2_bin.jar.

Ein
Code:
MAIN-CLASS: SVCD2VCD fhlaf_1.0b2_bin.jar
geht nicht.
Ein
Code:
CLASS-PATH: fhlaf_1.0b2_bin.jar
MAIN-CLASS: SVCD2VCD
geht nur in dem Ordner, wo es sich gerade befindet...
 
Mit der Frage benutzt du Packages, meinte icg eigentlich deine eigenen Klassen. Denn diese Packages mußt du im Attribut Main-Class auch mitangeben.
 
Naja, dann benutz ich also keine.

Dennoch: Wo liegt der Fehler? Was für Infos braucht ihr noch?
 
Vielleicht hilft euch weiter, was ich installiert habe:

J2SE Runtime Environment 5.0
Java 2 Runtime Environment, SE v.1.4.2_6
Java 2 SDK, SE v.1.4.2_6
 
Wenn Du mit Java 1.5 kompilierst und eine Jar-Datei erstellst, läuft diese nicht auf Rechnern, die eine JRE-Installation unterhalb Java 1.5 auf der Platte haben, bzw. das Jar-Archiv mit einer älteren Version gestartet wird.
 
Wenn Du mit Java 1.5 kompilierst und eine Jar-Datei erstellst, läuft diese nicht auf Rechnern, die eine JRE-Installation unterhalb Java 1.5 auf der Platte haben, bzw. das Jar-Archiv mit einer älteren Version gestartet wird.
Du kannst die Klassen auch, mit javac -source 1.4, Java 1.4 kompatibel kompilieren.
BTW Warum hast du 2 verschiedene JRE's und eine SDK installiert?
 
Habe das JRE 1.5 wieder runtergenommen jetzt. Weiterhin besteht das Problem:

Ich kann meine .jar überall von jedem Verzeichnis aus starten. Nur wenn ich die auf einem anderen PC starten will, krieg ich die fehlermeldung could not find MainClass.
(Ich habe das auf 2 PCs ausprobiert, beide JRE 1.4.2_06 bzw. 1.4.2_04)

🙁 🙁 🙁
 
Hat vielleicht einer einen Tip, was es sein könnte?

Oder könnte ich vielleicht das ganze in Eclipse (hab noch nie damit gearbeitet...) "importieren"?
 
Es klappt problemlos mit dem Programm, nur habe ich noch 2 Fragen dazu:

1. Wenn ich die Jar ausführe, entpackt er erstmal einen Großteil der Dateien, und packt sie am Ende wieder zusammen. Muss das so sein?
2. Auf der Homepage des Programmierers wird zwischen Executable, Self-Extracting und normalen Jars unterschieden. Ich kann das jedoch in dem Programm nirgends einstellen ?! Und vor allem: Wo ist der Unterschied zwischen den ganzen?
(normales=nur zippen; Executable=ausführbar; self-extracting=nur selbstextrahierend ??)

Danke an euch!

@ L-ectron-X: Hat sich dann soweit erledigt!
 
also eigentlich soltle er da nix entpacken. das einzige was er aus der jar auspackt sind jar dateien in der jar, soweit ich weiß.
zu 2:doch wenn du auf "Create Jar" klickst sollte da n dialog aufpoppen mit ner ComboBox wo du das einstellen kannst. wenn du dann auf Executable gehst kommt noch n DIalog wo du den KLassennamen der Main-Class eingeben kannst.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben