Ausführbare jar-Dateien
Java Programme lassen sich mit allen Resourcen in ausführbare *.jar-Dateien packen, die eine bessere Integration in das Betriebssystem bieten. Auf Windows Systemen lassen sie sich durch Doppelklick starten, unter Linux gibt man etwa ein: java –jar NameXYZ.jar. In diesem Abschnitt wird erläutert, wie man eine Jar-Datei herstellt.
Klassen Packen mit jar
Jar ist ein weiteres cooles JDK – Tool, mit dem sich die Class-Dateien und Ressourcen, die unser Programm braucht, zu einer einzigen Datei zusammen fassen lassen. Diese Jar – Dateien (JAR = Java-Archiv Format) sind die übliche Form, um Java Bibliotheken und Programme zu verbreiten. Dabei handelt es sich um erweiterte Zip –Dateien, die sich auch mit jedem anderen Zipper öffnen lassen. Sie bekommen also mit dem JDK einen kostenlosen Zipper und Unzipper.
Wir wollen nun den ClosableFrame4 aus dem vorangegangenen Kapitel in eine ausführbare Jar-Datei packen. Jar selbst wird auf der Kommandozeile bedient. Wechseln Sie in das Verzeichnis, in das Ihre *.class Dateien erstellt werden, und geben Sie ein:
jar -c(reate) -v(erbose) -f(ile) ClosableFrame4.jar .
Was in Klammern steht, bitte nicht eingeben. Der Punkt am Ende ist wichtig, er weist jar an, alle Dateien in allen Unterverzeichnissen mitzunehmen.
Kontrolle ist besser, mit:
jar -t(able) -f(ile) ClosableFrame4.jar
können wir uns ansehen, was die jar – Datei enthält. Sie sehen, dass sie genau die Verzeichnisstruktur abbildet. Natürlich sind hier jetzt eine Menge Klassen drin, die wir gar nicht brauchen. Wir hätten daher auch die benötigten Klassen einzeln mit vollem Pfad angeben können.
Auch entpacken ist möglich,
jar -x(tract) -f(ile) FileLister.jar
Sie können auf diese Weise auch Zip Dateien entpacken, wenn Sie gerade kein anderes Tool zur Hand haben.
Das jar-Manifest
Beim Auflisten des Inhalts oder spätestens beim Entpackenhaben Sie festgestellt, dass jar etwas zu unserer jar – Datei hinzugemogelt hat. Es ist META-INF/MANIFEST.MF, die sogenannte Manifest-Datei. Die Manifest-Datei kann sehr verschiedene Informationen über den Hersteller des Archivs, über Signatur, Siegel und Version sowie benötigte Java – Erweiterungen enthalten. (Einzelheiten zum Manifest – Format in der Dokumentation des JDK unter guide/jar/jar.html.)
Ausführbare jar-Dateien
Wir können die Manifest – Datei benutzen, um unsere jar-Archive direkt ausführbar zu machen, unter Windows sogar auch Doppelklick. Dazu müssen wir in der Manifest – Datei die Hauptklasse unseres Programms angeben, also die mit der main()-Methode. Legen Sie bitte eine Datei(manifest.txt) an, die folgende Zeile enthält:
Main-Class: basicjava.bsp.kap2.FileLister
Speichern Sie diese Datei im Verzeichnis "classes" und führen Sie jar erneut aus (löschen Sie vorher das META-INF/Verzeichnis, falls es existiert, wir wollen keine Verwirrung stiften:
jar -c(reate) -m(anifest) -f(ile) manifest.txt FileLister.jar .
Jar hat nun eine neue Datei erstellt, die sich durch:
java –jar FileLister.jar
starten lässt. Unter Windows startet diese Datei auch mit dem berühmten Doppelklick.
Es klappt nicht? Mögliche Fehlerquellen:
- In der manifest.txt Datei ist am Ende der Zeile kein Zeilenumbruch. Fügen Sie ein bis zwei Zeilenumbrüche ein und versuchen Sie es erneut.
- Die Manifest - Datei hat das falsche Encoding oder das falsche Zeilenendzeichen (WinNT!). Benutzen Sie einen anderen Editor, speichernSie als ANSI (us-ascii) und nach Möglichkeit mit Unix Zeilenendzeichen.
- Die Verknüpfung der *.jar Dateien aus Win32 Systemen ist nicht korrekt eingerichtet. Sie erkennen das daran, dass java –jar FileLister.jar das Programm korrekt startet, aber der Doppelklick nicht funktioniert. Sie können (auf eigenes Risiko) versuchen, die Verknüpfung selbst einzurichten: (Dateimanager/Extras/Ordneroptionen/Dateitypen: jar suchen (Executable jar – Datei), Eigenschaften, open, bearbeiten und dieses hier eingeben:"C:\Programme\Java\j2re1.4.2\bin\javaw.exe" -jar "%1" %*" bzw. der Pfadzu Ihrem javaw.) Alternativ dazu können Sie auch das JRE neu installieren.