Wie erstelle ich eine ausführbare JAR-Datei?

82

Ich habe ein Programm, das aus zwei einfachen Java Swing-Dateien besteht.

Wie erstelle ich eine ausführbare JAR-Datei für mein Programm?

Ruben
quelle
Was fragst du? Wie führe ich das JAR aus oder wie erstelle ich eine ausführbare Datei aus dem JAR (ein Befehl wie run.cmd)?
AlikElzin-Kilaka
Verwandte: superuser.com/questions/912955/...
AlikElzin-Kilaka

Antworten:

83

Eine JAR-Datei ist einfach eine Datei, die eine Sammlung von Java-Dateien enthält. Um eine JAR-Datei ausführbar zu machen, müssen Sie angeben, wo sich die mainKlasse in der JAR-Datei befindet. Beispielcode wäre wie folgt.

public class JarExample {

    public static void main(String[] args) {
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                // your logic here
            }
        });
    }
}

Stellen Sie Ihre Klassen zusammen. Um ein Glas zu erstellen, müssen Sie auch eine Manifest-Datei ( MANIFEST.MF) erstellen . Zum Beispiel,

Manifest-Version: 1.0
Main-Class: JarExample

Legen Sie die kompilierten Ausgabeklassendateien (JarExample.class, JarExample $ 1.class) und die Manifestdatei im selben Ordner ab. Wechseln Sie in der Eingabeaufforderung zu dem Ordner, in dem sich Ihre Dateien befinden, und erstellen Sie das jar mit dem Befehl jar. Zum Beispiel (wenn Sie Ihre Manifestdatei als jexample.mf benennen)

jar cfm jarexample.jar jexample.mf *.class

Es wird eine ausführbare Datei jarexample.jar erstellt.

isurusndr
quelle
34
Nur meine zwei Cent: Sie müssen nicht unbedingt eine Manifestdatei erstellen. Wenn Sie für das Dienstprogramm jar das Flag e anstelle von m angeben , müssen Sie nur den Einstiegspunkt (dh die Hauptklasse) der Anwendung angeben und nicht eine Manifestdatei. Beispiel:jar cvfe jarexample.jar com.example.jar.JarExample *.class
Powerslave
1
Wenn Sie die Datei MANIFEST.MF erstellen, vergessen Sie nicht, die letzte Zeile mit einem Zeilenumbruch zu beenden. Fügen Sie unter Windows am Ende einfach eine leere Zeile hinzu. Andernfalls wird das letzte Attribut nicht in die JAR-Datei aufgenommen. In diesem speziellen Fall fehlt das Hauptklassenattribut.
David
36

In Eclipse können Sie dies einfach wie folgt tun:

Klicken Sie mit der rechten Maustaste auf Ihr Java-Projekt und wählen Sie Exportieren .

Wählen Sie Java -> Ausführbare JAR-Datei -> Weiter.

Wählen Sie die Startkonfiguration und wählen Sie Projektdatei als Hauptklasse

Wählen Sie den Zielordner aus, in dem Sie ihn speichern möchten, und klicken Sie auf Fertig stellen.

Twinscode
quelle
Starten Sie die Konfiguration: <MainClasssName> - <ProjectName>
Corlaez
16

Hier steht es in einer Zeile:

jar cvfe myjar.jar package.MainClass *.class

Wo MainClassist die Klasse mit Ihrer mainMethode und packageist MainClassdas Paket.

Beachten Sie, dass Sie Ihre .javaDateien zu .classDateien kompilieren müssen, bevor Sie dies tun.

c  create new archive
v  generate verbose output on standard output
f  specify archive file name
e  specify application entry point for stand-alone application bundled into an executable jar file

Diese Antwort wurde von Powerslaves Kommentar zu einer anderen Antwort inspiriert.

Fluss
quelle
Ich Error: Could not find or load main class mtx.testClass Caused by: java.lang.ClassNotFoundException: mtx.testClass
erhalte
Ist testClassin einer Ihrer .classDateien definiert? Stellen Sie sicher, dass Sie Ihre source ( .java) - Dateien kompiliert haben, bevor Sie diesen Befehl ausführen. Außerdem sollte Ihre Klasse normalerweise UpperCamelCase sein. Versuchen Sie TestClassstattdessen, sie umzubenennen .
Fluss
4

Wenn Sie maven verwenden, fügen Sie Ihrer pom.xml- Datei Folgendes hinzu :

<plugin>
    <!-- Build an executable JAR -->
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>2.4</version>
    <configuration>
        <archive>
            <manifest>
                <mainClass>com.path.to.YourMainClass</mainClass>
            </manifest>
        </archive>
    </configuration>
</plugin>

Dann kannst du rennen mvn package. Die JAR-Datei befindet sich unter im Zielverzeichnis .

Willi Mentzel
quelle
Eine Variante als oben.
Vishwa Ratna
0

Für diese Frage ist es zu spät. Aber wenn jetzt jemand nach dieser Antwort sucht, habe ich es geschafft, ohne Fehler zu laufen.

Stellen Sie zunächst sicher, dass Sie maven herunterladen und dem Pfad hinzufügen . [ mvn --version] gibt Ihnen Versionsspezifikationen davon, wenn Sie den Pfad korrekt hinzugefügt haben.

Fügen Sie nun dem Maven-Projekt [ pom.xml] folgenden Code hinzu, und ersetzen Sie ihn im folgenden Code durch Ihren eigenen Einstiegspunkt für die Hauptdatei, z. B. [ com.example.test.Test ].

      <plugin>
            <!-- Build an executable JAR -->
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>2.4</version>
            <configuration>
                <archive>
                    <manifest>
                    <mainClass>
            your_package_to_class_that_contains_main_file .MainFileName</mainClass>
                    </manifest>
                </archive>
            </configuration>
        </plugin>

Gehen Sie nun CMDin Ihrem Projekt zur Befehlszeile [ ] mvn packageund geben Sie ein. Dadurch wird eine JAR-Datei wie ProjectName-0.0.1-SNAPSHOT.jarunter generiert target Verzeichnis .

Navigieren Sie nun in das Zielverzeichnis durch cd target .

Geben Sie schließlich ein java -jar jar-file-name.jarund ja, dies sollte erfolgreich funktionieren, wenn Sie keine Fehler in Ihrem Programm haben.

Badri Paudel
quelle