Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Um ein Jar-Archiv ausführbar zu machen, brauchst Du eine Datei namens Manifest.mf. In dieser wird letztendlich dem Interpreter die Main-Class bekannt gemacht.
Um ein ausführbares Jar-File zu erstellen, öffnest Du Dir mit einem Texteditor zunächst eine Datei und gibst ihr den Namen Manifest.txt. Der Inhalt dieser Textdatei kann lediglich aus folgendem Text bestehen:
Code:
CLASS-PATH: .
MAIN-CLASS: StartKlasse
Ganz wichtig dabei: Beide Zeilen sind mit einem Zeilenumbruch (Enter) abzuschließen. Und die Angabe der Main-Class erfolgt ohne die Dateiendung .class
Diese Datei legst Du in das Verzeichnis Deiner Quelltextdateien bzw. in das Verzeichnis Deiner Startklasse (Main-Class).
Fehlt nur noch der Aufruf des Dienstprogrammes Jar.
Ich persönlich habe mir dazu (das macht jeder anders) eine Batchdatei (MakeJar.bat ) angefertigt, die ich ganz bequem in jedes meiner Programmier-Projekt-Verzeichnisse kopieren, anpassen und immer schnell ohne viel Tipperei per Doppelklick ausführen kann:
Code:
rem Pfad zum bin-Verzeichnis des SDK setzen
set path=C:\j2sdk1.4.2_04\bin
rem Jar aufrufen
jar cfvm JarName.jar Manifest.txt *.*
rem Konsole für eventuelle Fehlermeldungen noch offen lassen
pause
Diese Batchdatei würde Dir den kompletten Inhalt (*.*) Deines Projekt Verzeichnisses inklusive aller Quelltext-Dateien, Grafiken und Unterverzeichnisse in einer ausführbaren Jar-Datei komprimiert abspeichern.
Die Manifest.txt ist deshalb eine .txt-Datei, weil sie sich so einfacher editieren lässt. (Doppelklick)
Klar, auch eine perfekte Möglichkeit. Aber weniger Leute wissen, wie man eine ausführbares Jar-Archiv "per Hand" erstellt, deshalb scheint dieses Thema auch öfter mal hier im Forum aufzutauchen.
Hm, vielleicht schreibe ich mal etwas Ausführlicheres in den FAQ-Bereich.
Klar, auch eine perfekte Möglichkeit. Aber weniger Leute wissen, wie man eine ausführbares Jar-Archiv "per Hand" erstellt, deshalb scheint dieses Thema auch öfter mal hier im Forum aufzutauchen.
Hm, vielleicht schreibe ich mal etwas Ausführlicheres in den FAQ-Bereich.
gute idee :toll:
@all: ich benutze immer den JarWizard ( www.sortamusic.com ). das ding ist ziemlich cool, und ist auch gut. ist halt ätzend wenn man zig-files in eine jar packen will und das alles in der konsole machen will :autsch:
habs jetzt mal mit nem anderen proggy probiert. da kommt beim doppelklick die gleiche fehlermeldung aber inner konsole kommt keine. beim anderen kam, dass er keine source für imageicon hätte. alles komisch
Der beschriebene Fehler deutet darauf hin, dass benötigte Resourcen nicht bereit stehen. Also irgendwelche Grafiken, Klassen, Textdateien o.ä., die zur Laufzeit vom Programm geladen werden sollen.
In meinem Beispiel liegen alle Klassen in ein und dem selben Verzeichnis, alle Grafiken in einem Unterverzeichnis.
Wenn ich das MakeJar.bat benutze bekomme ich die fehlermeldung. warum??
java.io.IOException: invalid manifest format
at java.util.jar.Manifest.read(Manifest.java:193)
at java.util.jar.Manifest.<init>(Manifest.java:52)
at sun.tools.jar.Main.run(Main.java:124)
at sun.tools.jar.Main.main(Main.java:904)
Kann das nochmal einer schrittweise erklären wie ich aus einer meineClass.class ein jar mache.
Code:
CLASS-PATH: .
MAIN-CLASS: meineClass.class
ist das so richtig als Mainfest.txt
Code:
jar cfvm meineJar.jar Manifest.txt meineClass.class
muss ich das dann so eingeben in die console?
und was sagt mir so eine fehlermeldung
Code:
java.io.IOException: invalid manifest format
at java.util.jar.Manifest.read(Manifest.java:193)
at java.util.jar.Manifest.<init>(Manifest.java:52)
at sun.tools.jar.Main.run(Main.java:124)
at sun.tools.jar.Main.main(Main.java:904)
Fatal exception occured... is was anderes als "Failed to load main class attribute".
1. am ende muss man noch in der manifest datei eine neue zeile machen ( falls nicht) udn dann startet mal euer programm über die konsole, da wird ein stacktrace geschrieben werden wenn eine exception geworfen wird
Das Problem liegt in der 2. Zeile.
Es muss nur der Klassenname der Klasse angegeben werden, welche die main()-Methode enthält. Und zwar ohne die Dateiendung .class