JAR Dateien kreieren, Manifest.mf + main-class?

Hallo Leute,

ich versuche mit dem jdk eine Jar Datei zu erstellen.
Das Progrämmchen besteht aus 2 Java Dateien.

was muss genau als main-class in die Manifest Datei eingetragen werden?

Ich habe es ausprobiert und es kommt folgende Fehlermeldung:
‚Could not find the main class‘

Grüße Abbuzze

ich versuche mit dem jdk eine Jar Datei zu erstellen.
Das Progrämmchen besteht aus 2 Java Dateien.

Das geht z.B. so:

jar cvf jarName.jar Datei1.class Datei2.class
oder
jar cvf jarName.jar \*.class

Erstellt ein jar mit dem Namen jarName.jar, welches 2 class-Dateien
enthaelt. Zusaetzlich erstellt jar noch eine Default Manifest.mf.

Wenn du eine eigene Manifest.mf hinzufuegen willst, dann erstelle
eine Datei meinManifest.mf (Name beliebig, muss dann nur nachher
beim Aufruf des Befehls korrekt angegeben werden) mit folgendem
exemplarischem Inhalt:

Manifest-Version: 1.0
Created-By: Apache Ant 1.5.1
Extension-Name: Struts Framework
Specification-Title: Struts Framework
Specification-Vendor: Apache Software Foundation
Specification-Version: 1.1
Implementation-Title: Struts Framework
Implementation-Vendor: Apache Software Foundation
Implementation-Vendor-Id: org.apache
Implementation-Version: 1.1

Der Befehl muss dann wie folgt aussehen:

jar cvf **m** jarName.jar meinManifest.mf Datei1.class Datei2.class

Gruss, Patrick

es kommt folgende Fehlermeldung:

bei jar… *.class

Failed to load Main-Class manifest attribute from E:…

Was nun ?!

Grüße Abbuzze

bei jar… *.class

Poste doch mal den gesamten Befehl.

Failed to load Main-Class manifest attribute from E:…

Wo fuehrst du den Befehl aus und wo liegen die Dateien?

Gruss, Patrick

Servus,

also Befehl:

jar cvf test8.jar *.class

Die Dateien liegen auf dem USB Stick \Java

Sie heissen
Listing3602.class
und
WindowClosingAdapter.class

Der Befehl wird in der Eingabeaufforderung von WIndows eingebeben (Dos Prompt)
Meldungen:
Manifest wurde hinzugefügt
Hinzufügen von: Listing3602.class
Hinzufügen von: WindowClos…

Dann versuche ich die JAR Datei unter Windows XP zu starten.

UNd dann kommt Meldung: Failed to load Main-Class manifest attribute…

Die MainMethode ist in Listing3602.class

Grüße Abbuzze

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Dann versuche ich die JAR Datei unter Windows XP zu starten.
UNd dann kommt Meldung: Failed to load Main-Class manifest
attribute…

Also beim „Starten“ des JARs kommt die Fehlermeldung. War nicht
so ganz klar nach deinem letzten Posting.

Wie startest du denn das JAR?

Hier ein Beispiel, wie es u.U. klappen koennte (classpath muss
ggfs. angepasst werden):

java -classpath test8.jar Listing3602

Gruss, Patrick

Seruvs,

also unter der Eingabeaufforderung funzt es nun.

Aber unter Windows XP kommt noch immer die gleiche Fehlermeldung:
Failed to load Main-Class manifest attribute from E:\java\test8.jar

Sind die Umgebungsvariablen vielleicht nicht richtig gesetzt?
Das normale ausführen unter Eclipse funktioniert.

Wie könnte es unter WindowsXP ‚Arbeitsplatz‘ funzen?

Vielen Dank Abbuzze

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Aber unter Windows XP kommt noch immer die gleiche

Was meinst du jetzt mit „unter Windows XP“ genau? Wie
versuchst du denn das JAR zu benutzen??? Mit einem
Browser (Applet) oder greift eine andere Java-Anwendung
darauf zu?

Sind die Umgebungsvariablen vielleicht nicht richtig gesetzt?

Tja, trag doch dein JAR-File in den CLASSPATH (unter Umgebungsvariablen)
ein. Vielleicht klappt es dann schon.

Gruss, Patrick

Servus,

ja Doppelklick auf die Datei test8.jar

Es soll vom Desktop aus startbar sein.

Grüße Abbuzze

Ah, per Doppelklick, das habe ich mir gerade gedacht.
Da mir das nicht so gelaeufig ist, bin ich nicht gleich
darauf gekommen. Ich Dummerchen, ich.

In diesem Fall ist also eine Manifest.mf unbedingt notwendig.
Wie sieht denn deine Manifest.mf aus?

Gruss, Patrick

Manifest-Version: 1.0
Main-Class: Listing3602

Wie ist die Main-Class definiert?
Also der Ursprung der Main Methode? keine Endung? *.class??

Wie ist das, wenn ich das Progrämmchen bei JDK 1.5… ein Jar mache und es versuche mit JDK 1.4.2… zu starten?

Bei 1.5 funzt es, unter DOS

bei 1.4.2 sagt er keine akt. Version.

Manifest-Version: 1.0
Main-Class: Listing3602

Ja, das sieht gut aus, aber noch 2 Sachen:

  1. ist Listing3602 in einem Package?
  2. muss die Manifest.mf mit einer Leerzeile enden.
    The text file must end with a new line or carriage return…
    http://java.sun.com/docs/books/tutorial/jar/manifest…

Wie ist das, wenn ich das Progrämmchen bei JDK 1.5… ein Jar
mache und es versuche mit JDK 1.4.2… zu starten?

Du kannst unter 1.5 entwickeln, solltest dabei aber 1.4 „compliant“
bleiben, falls du Kunden hast, die noch 1.4 benutzen.
(Schlechtes Beispiel: Wir haben hier mit 1.4 entwickelt und hatten
dann Probleme beim Kunden, der noch 1.3 hatte)

Gruss, Patrick

http://java.sun.com/j2se/1.3/docs/guide/jar/jar.html

Servus,

  1. ist kein Package, zumindest sind die Dateien lose. Unter Eclipse sind die beiden Dateien, von 200… unter einem großem Package gespeichert. Also kein Package.

  2. Ja das habe ich auch gelesen, ich update es nochmal.

Ich habe eine einfache Java Swing Oberfläche. Nur 3 Buttons, ich habe das gefühl, dass das nicht compliant ist. Sonst würde er ja nicht so einen Stress machen…
Entwicklung unter 1.5 und Client ist 1.4…

Danke Abbuzze

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Kein Wunder das diese Automatische Manifest Erstellung nicht funzt.
Der JDK schreibt keine Main-Class rein.

Ich habe es umgeschrieben.
Unter 1.5 läuft es.

Unter 1.4 läuft es nicht
Hinweis: Could not find the Main Class. Programm will exit.

grrrrr

so ärgerlich !

Hat Du einen Tip?

Grüße Abbuzze

Kein Wunder das diese Automatische Manifest Erstellung nicht
funzt.Der JDK schreibt keine Main-Class rein.

Sieht die Manifest.mf in etwa so aus?

Manifest-Version: 1.0
Created-By: 1.4.2\_03 (Sun Microsystems Inc.)

Wenn ich hier jetzt die Manifest.txt mit angebe und

jar cvfm hello.jar Manifest.txt \*.class

ausfuehre, dann steht in meiner

Manifest-Version: 1.0
Created-By: 1.4.2\_03 (Sun Microsystems Inc.)
Main-Class: HelloWorld

drin. Die Manifest.txt sieht so aus

Manifest-Version: 1.0
Main-Class: HelloWorld
[leerzeile]

Test laeuft erfolgreich

[e:\temp]java -jar hello.jar
Hello World!

[e:\temp]

Ich habe es umgeschrieben.

Was jetzt??? Die Manifest.mf in dem JAR?

Ich glaube, das Problem ist die Manifest.mf.
Kannst du mir die .class-Dateien vielleicht mal
schicken. Dann kann ich hier unter 1.4 Bedingugen
das mal testen. Oder geht es da um sensible Daten?

Gruss, Patrick

Sieht die Manifest.mf in etwa so aus?

Manifest-Version: 1.0
Created-By: 1.4.2_03 (Sun Microsystems Inc.)

Ja genau… heisse Luft :wink:

Wenn ich hier jetzt die Manifest.txt mit angebe und

jar cvfm hello.jar Manifest.txt *.class

ausfuehre, dann steht in meiner

Manifest-Version: 1.0
Created-By: 1.4.2_03 (Sun Microsystems Inc.)
Main-Class: HelloWorld

Super Tip Danke !

drin. Die Manifest.txt sieht so aus

Manifest-Version: 1.0
Main-Class: HelloWorld
[leerzeile]

Test laeuft erfolgreich

[e:\temp]java -jar hello.jar
Hello World!

[e:\temp]

Ich habe es umgeschrieben.

Was jetzt??? Die Manifest.mf in dem JAR?

Ich glaube, das Problem ist die Manifest.mf.
Kannst du mir die .class-Dateien vielleicht mal
schicken. Dann kann ich hier unter 1.4 Bedingugen
das mal testen. Oder geht es da um sensible Daten?

Gruss, Patrick

Wenn ich hier jetzt die Manifest.txt mit angebe und

jar cvfm hello.jar Manifest.txt *.class

ausfuehre, dann steht in meiner

Manifest-Version: 1.0
Created-By: 1.4.2_03 (Sun Microsystems Inc.)
Main-Class: HelloWorld

Super Tip Danke !

Kreisch! Den Tipp habe ich doch schon in meinem ersten
Posting gepostet. O_o

Gruss, Patrick :wink:

1 „Gefällt mir“

Den habe ich auch ‚damals‘ ausprobiert.
Hat aber nicht gefunzt.

Hast Du meine Mail erhalten`?

Grüße Abbuzze

Kreisch! Den Tipp habe ich doch schon in meinem ersten
Posting gepostet. O_o

*Grins* Konnte nicht umhin den Thread durchzulesen… Huhahahahaha!

Danke für die Unterhaltung - Hab ich grad nötig :wink:

J.P.Jarolim