HOWTO · Java
Java-JAR-Datei erstellen und ausführen
Erfahren Sie, wie Sie eine Java-Klasse kompilieren, sie in ein ausführbares JAR packen, es mit java -jar ausführen und eine Klasse aus einem JAR mit explizitem Klassenpfad starten.
Auf dieser Seite
Ein Java-JAR packt kompilierte Klassen und zugehörige Ressourcen in ein einziges Archiv. Um ein ausführbares JAR zu erstellen und auszuführen, schreiben Sie eine Klasse mit einer main-Methode, kompilieren Sie sie mit javac, packen Sie sie mit einem Main-Class-Eintrag und starten Sie sie dann mit java -jar.
Ein ausführbares Java-JAR erstellen und ausführen
Erstellen Sie diese Quelldatei unter src/MyClass.java:
public class MyClass {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
Erstellen Sie aus einem sauberen Projektverzeichnis heraus das Ausgabeverzeichnis mit mkdir -p out und kompilieren Sie die Klasse dann mit javac -d out src/MyClass.java dorthin. Erstellen Sie das ausführbare Archiv mit jar cfe MyApplication.jar MyClass -C out .. Die Option c erstellt das Archiv, f benennt die Archivdatei und e legt die Einstiegspunktklasse fest. Der Befehl trägt Main-Class: MyClass in das Manifest ein und fügt die kompilierten Dateien aus out hinzu.
Führen Sie es aus diesem Verzeichnis mit java -jar MyApplication.jar aus. Der Aufruf von println schreibt sein Argument beim Ausführen des Programms in die Standardausgabe.
Erwartete Ausgabe:
Hello, World!
Ein JAR ohne ausführbares Manifest ausführen
Ein JAR benötigt keinen Main-Class-Eintrag, wenn Sie die Klasse selbst starten. Packen Sie dieselbe kompilierte Ausgabe ohne den Einstiegspunkt mit jar cf MyApplication.jar -C out . und geben Sie beim Starten sowohl das Archiv als auch den Klassennamen an: java -cp MyApplication.jar MyClass.
Hier legt -cp den Klassenpfad fest, und MyClass benennt die Klasse, deren main-Methode Java aufrufen soll. Das ist nützlich, wenn das Archiv eine Bibliothek ist oder wenn Sie den Einstiegspunkt beim Start wählen möchten. Es unterscheidet sich von java -jar: Diese Option verwendet die im Manifest des Archivs eingetragene Hauptklasse und keinen separat angegebenen Klassennamen.
Das JAR überprüfen und häufige Fragen klären
Verwenden Sie jar tf MyApplication.jar, um den Inhalt des Archivs aufzulisten. Ein ausführbares JAR sollte MyClass.class und ein Manifest unter META-INF/MANIFEST.MF enthalten; untersuchen Sie dieses Manifest mit einem Archivprogramm, um zu bestätigen, dass es exakt den Eintrag Main-Class: MyClass enthält. Bei einem JAR für den Klassenpfad muss das Manifest keine Hauptklasse benennen, aber die mit -cp angegebene Klasse muss im Archiv oder an einem anderen Ort im Klassenpfad vorhanden sein.
Ein JAR ist ein ZIP-basiertes Archiv für Java-Klassendateien, Ressourcen und Metadaten. java -jar startet die in seinem Manifest benannte Klasse, während Sie mit java -cp eine Klasse direkt benennen können. Ein Doppelklick auf ein JAR funktioniert auf einem Desktop-System nur, wenn eine Java-Laufzeit und eine geeignete Dateizuordnung konfiguriert sind; der Start über ein Terminal macht den gewählten Befehl und etwaige Diagnosemeldungen sichtbar.