Wie lassen sich *.jar-Dateien herstellen?

*.jar-Dateien sind ausführbare Java ARchiv-Dateien, die i.A. verwendet werden, um Java Applikationen, Klassen-Bibliotheken, Quellcode, etc. zu packen. Sie entsprechen *.zip-Archiven, denen Metadaten in Form einer sog. Manifest-Datei beigefügt sein können.

Um den Inhalt einer *.jar-Datei anzuzeigen gibt man auf der Konsole folgendes ein:

jar tvf meineJarDatei.jar

Die Herstellung eines solchen Archivs zum Packen einer Java-Applikation gestaltet sich recht einfach. Liegen *.java und *.class-Dateien im gleichen Verzeichnis, wechselt man in dieses Verzeichnis und löscht zunächst die *.class-Dateien, um sie später optimiert wieder erstellen zu können:

cd pfadZumVerzeichnis
rm *.class

Anschließend kompiliert man alles nochmals ohne Debugging-Informationen. -target 1.6 erfasst hierbei die Zielversion der JVM. Die zulässigen Versionsbezeichner und weitere Parameter können in den Man-Pages des Compilers mit man javac nachgelesen werden.

javac -g:none -target 1.6 *.java

Als nächstes muss eine Manifest-Datei erstellt werden. Sie ermöglicht der JVM die Einstiegsklasse mit der main() -Methode zu ermitteln. Es handelt sich hierbei um eine einfache Text-Datei. Sie liegt üblicherweise in einem Verzeichnis META-INF und trägt den Namen MANIFEST.MF. Die Datei selber enthält den folgenden Text

Manifest-Version: 1.0
Class-Path: .
Main-Class: MeineMainKlasse

Class-Path gibt hierbei das Stamm-Verzeichnis der kompilierten Klassen an. Das oberste Verzeichnis des Archivs wird mit einem Punkt angegeben.
Bsp.: Liegt die Klasse mit der main()-Methode im Verzeichnis app und die Manifest-Datei liegt unter app/META-INF/MANIFEST.MF so muss ein Punkt als Classpath angegeben werden.
Die *.jar-Datei selbst kann dann mit den beiden folgenden Befehlen erstellt und ausgeführt werden:

jar cvmf META-INF/MANIFEST.MF meinJarFile.jar *.class
java -jar meinJarFile.jar

Als Ergebnis lässt sich im aktuellen Verzeichnis eine *.jar-Datei mit dem Namen meinJarFile.jar finden.

Wenn Ihnen javabeginners.de gefällt, freue ich mich über eine Spende an diese gemeinnützigen Organisationen.

>