Java erstellt eine JAR-Datei


73

Ich lerne Java und habe ein Problem. Ich habe 6 verschiedene Klassen erstellt, jede hat ihre eigene main()Methode. Ich möchte .jarfür jede Klasse eine ausführbare Datei erstellen, dh 6 ausführbare .jarDateien.

Bisher habe ich es versucht

java -jar cf myJar.jar myClass.class

und ich bekomme 'Zugriff auf jarfile cf nicht möglich' . Ich mache etwas falsch, aber ich weiß nicht was. Ich benutze auch Eclipse IDE, wenn das etwas bedeutet.

Antworten:


118

Um eine .jar - Datei zu erstellen, müssen Sie verwenden jarstatt java:

jar cf myJar.jar myClass.class

Wenn Sie es ausführbar machen möchten, müssen Sie außerdem einen Einstiegspunkt (dh eine Klasse mit public static void main(String[] args)) für Ihre Anwendung angeben . Dies wird normalerweise durch Erstellen einer Manifestdatei erreicht , die den Main-ClassHeader enthält (z Main-Class: myClass. B. ).

Wie Mark Peters betonte, können Sie mit JDK 6 die eOption verwenden, um den Einstiegspunkt zu definieren:

jar cfe myJar.jar myClass myClass.class 

Schließlich können Sie es ausführen:

java -jar myJar.jar

Siehe auch


Hier fehlt der Punkt, nicht wahr? Sind cfüberhaupt gültige Optionen dazu java? In jedem Fall möchte er das Glas erstellen, nicht ausführen. Nach der Frage sowieso.
Mark Peters

@ Mark Peters: Tippfehler, ich meinte Glas. Vielen Dank.
João Silva

In welchem ​​Fall brauchen Sie das -jarArgument nicht? Außerdem wird es dadurch nicht ausführbar, da Sie kein Manifest angeben. (Offenbar in JDK 6+ können Sie „e“ als Abkürzung verwenden , um zu vermeiden das Manifest Versorgung manuell: jar cfe myJar.jar myClass myClass.class)
Mark Peters

Ich bekomme immer "kein Hauptmanifestattribut in myJar.jar", wenn ich versuche, es auszuführen: /
Maslor

Wenn Sie ein ausführbares JAR möchten, müssen Sie die Manifestdatei hinzufügen, etwajar -cvfm out.jar META-INF/MANIFEST.MF src/*.class
Hritik

16

Sinus, von dem Sie erwähnt haben, dass Sie Eclipse verwenden ... Eclipse kann die JARs für Sie erstellen, solange Sie jede Klasse ausführen, die einmal eine Hauptklasse hat. Klicken Sie mit der rechten Maustaste auf das Projekt und klicken Sie auf Exportieren. Wählen Sie dann im Java-Ordner "Ausführbare JAR-Datei" aus. Wählen Sie den Klassennamen in der Startkonfiguration aus, wählen Sie einen Ort zum Speichern der JAR-Datei und treffen Sie bei Bedarf eine Entscheidung zum Umgang mit Bibliotheken. Klicken Sie auf Fertig stellen, wischen Sie sich die Hände an der Hose ab.


10

Oft müssen Sie mehr in das Manifest einfügen, als Sie mit dem -eSwitch erhalten, und in diesem Fall lautet die Syntax:

jar -cvfm myJar.jar myManifest.txt myApp.class

Was lautet: "Erstellen Sie einen ausführlichen jarFilename manifestFilename", gefolgt von den Dateien, die Sie einschließen möchten.

Beachten Sie, dass der Name der von Ihnen angegebenen Manifestdatei beliebig sein kann, da jarsie automatisch umbenannt und an der richtigen Stelle in der JAR-Datei abgelegt wird.


6

Weg 1:

Lassen Sie uns die Java-Datei test.java haben, die die Hauptklasse testa enthält. Zuerst kompilieren wir unsere Java-Datei einfach als javac test.java. Wir erstellen die Datei manifest.txt im selben Verzeichnis und schreiben die Hauptklasse: mainclassname. z.B :

  Main-Class: testa

Dann erstellen wir eine JAR-Datei mit diesem Befehl:

  jar cvfm anyname.jar manifest.txt testa.class

Dann führen wir die JAR-Datei mit dem folgenden Befehl aus: java -jar anyname.jar

Weg 2:

Lassen Sie uns ein Paket mit dem Namen eins haben, in dem sich jede Klasse befindet. Dann erstellen wir eine JAR-Datei mit diesem Befehl:

  jar cf anyname.jar one

Dann öffnen wir manifest.txt im Verzeichnis META-INF in der Datei anyname.jar und schreiben

  Main-Class: one.mainclassname 

In der dritten Zeile führen wir dann die JAR-Datei mit dem folgenden Befehl aus:

  java -jar anyname.jar

Um eine JAR-Datei mit mehr als einer Klassendatei zu erstellen: jar cf anyname.jar one.class two.class three.class ......


1

Ordnen Sie alle 6 Klassen 6 verschiedenen Projekten zu. Erstellen Sie dann JAR-Dateien aller 6 Projekte. Auf diese Weise erhalten Sie 6 ausführbare JAR-Dateien.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.