Wie erstellt man richtig JARs aus IntelliJ IDEA?

Lesezeit: 8 Minuten

Ich habe ein Projekt, das ein einzelnes Modul und einige Abhängigkeiten enthält. Ich möchte ein JAR in einem separaten Verzeichnis erstellen, das das kompilierte Modul enthält. Außerdem möchte ich, dass die Abhängigkeiten neben meinem Modul vorhanden sind.

Egal wie ich den „Build JAR“-Prozess von IntelliJ verdrehe, die Ausgabe meines Moduls erscheint leer (neben einer META-INF Datei).

Anweisungen:

Datei -> Projektstruktur -> Projekt Einstellungen -> Artefakte -> Klicken + (Pluszeichen) -> Krug -> Von Modulen mit Abhängigkeiten...

Wählen Sie a Hauptklasse (Der eine mit main() -Methode), wenn Sie das JAR lauffähig machen müssen.

Wählen In das Zielglas extrahieren

Klicken OK

Klicken Anwenden/OK

Das obige legt das “Skelett” fest, wo das Glas gespeichert wird. Um es tatsächlich zu erstellen und zu speichern, gehen Sie wie folgt vor:

Bauen -> Artefakt bauen -> Bauen

Versuchen Sie, die .jar-Datei zu extrahieren aus:

📦ProjectName
 ┗ 📂out
   ┗ 📂artifacts
     ┗ 📂ProjectName_jar
        ┗ 📜ProjectName.jar

Verweise:

  • Es schlägt fehl, wenn einige Klassen in Ihrem enthaltenen JAR mit RSA signiert sind.

    – Asif Shahzad

    7. März 2012 um 13:01 Uhr

  • Diese Methode schlägt immer noch fehl, die JAR-Datei wird nicht ausgeführt

    – Samuel Owino

    27. Juni 2017 um 10:20 Uhr


  • Es scheint, dass jemand wirklich sehr hart gearbeitet hat, damit es nicht funktioniert. Es ist so schade, dass es nie funktioniert. Ich habe mindestens 50 verschiedene Antworten ausprobiert und keine davon hat funktioniert. Und es ist jedes Mal die gleiche Geschichte. Jetzt reserviere ich mir eine Woche, um es einfach als JAR auszugeben, da jeder in unserem Unternehmen der Meinung ist, dass es ein echter Aufwand ist, ein Ausgabejar zu produzieren.

    – Eindrucksvoll

    15. Januar 2018 um 9:02 Uhr

  • Wie viele vor mir geschrieben haben, ist dies eine Vereinfachung, die manchmal funktioniert. Bitte beachten Sie die Antwort von @zsolt tolvali unten. Aus Sicht von IntelliJ wäre es gut, den JAR-Erstellungsprozess zu einer STANDARDAKTIVITÄT beim Erstellen eines neuen Projekts zu machen, da die wenigsten Leute ihn nicht brauchen!

    – Etamar Laron

    14. März 2018 um 6:51 Uhr

  • Es ist fast 2020, und wir haben fast ein selbstfahrendes Auto und können immer noch nicht herausfinden, wie man ausführbare JAR-Dateien in Intellij erstellt

    – 1234

    6. Dezember 2019 um 2:30 Uhr

Dies ist immer noch ein Problem im Jahr 2017, ich hoffe, es wird jemandem da draußen helfen! Ich habe 2 Möglichkeiten gefunden, um funktionierende JAR-s unter IntelliJ 2017.2 zu erstellen

1. Artefakt aus IntelliJ erstellen:

  • Gehen Sie zur Projektstruktur:

Dateimenü

  • Erstellen Sie ein neues Artefakt:

Erstellen Sie ein neues Artefakt

  • Wählen Sie die Hauptklasse aus und stellen Sie sicher, dass Sie den Manifestordner ändern:

Geben Sie hier die Bildbeschreibung ein

Sie müssen das Manifest-Verzeichnis ändern:

<project folder>\src\main\java 

Ersetzen Sie “Java” durch “Ressourcen”

<project folder>\src\main\resources

So sollte es aussehen:

korrekter Weg für neues Manifest

  • Dann wählen Sie die Abhängigkeiten aus, die Sie IN Ihr JAR oder IN DIE NÄHE Ihrer JAR-Datei packen möchten

  • Um Ihr Artefakt zu bauen, gehen Sie auf Artefakte bauen und wählen Sie “Wiederaufbau”. Es erstellt einen “out”-Ordner mit Ihrer JAR-Datei und ihren Abhängigkeiten.

Geben Sie hier die Bildbeschreibung ein

2. Verwendung des maven-assembly-plugins

Build-Abschnitt zur pom-Datei hinzufügen

    <build>
        <plugins>
            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <configuration>
                    <finalName>ServiceCreate</finalName>
                    <appendAssemblyId>false</appendAssemblyId>
                    <archive>
                        <manifest>
                            <mainClass>com.svt.optimoo.App</mainClass>
                        </manifest>
                    </archive>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
  • Erstellen Sie eine neue Run/Debug-Konfiguration:

Erstellen Sie eine neue Run/Debug-Konfiguration:

  • Anwendung wählen:

Anwendung wählen

  • Fülle das Formular aus
  • Fügen Sie das Maven-Ziel „assembly:single“ nach dem zuletzt auszuführenden Build hinzu

Geben Sie hier die Bildbeschreibung ein

Endgültige Einrichtung

  • Speichern Sie es und führen Sie es dann aus

Geben Sie hier die Bildbeschreibung ein

Durch dieses Verfahren wird die JAR-Datei im Ordner „Ziel“ erstellt

Speicherort der JAR-Datei

  • Ändern Sie das Manifest-Verzeichnis in src/resources ist der entscheidende Punkt !!! danke~

    – Fantouch

    28. November 2017 um 12:28 Uhr

  • Ich bekam no main manifest attribute Übernahme obiger Lösungen. Niemand hat erwähnt, das zu ändern path to manifest. Danke!!

    – Prometheus

    2. September 2018 um 5:46 Uhr

  • Wie wäre es mit Quellcode in Scala? Java ist nicht das, was ich verwende

    – Kiwi

    20. Februar 2019 um 15:52 Uhr

  • Anstelle von Ressourcen können Sie auch das Verzeichnis in das über java ändern, z ...\src\main\java -> ...\src\main und es funktioniert. Jet Brains sollte diesen Standard wirklich beheben, es ist immer noch ein Problem in 2020.1.4.

    – Keeely

    22. September 2020 um 10:19 Uhr


  • @ Keeely Ich glaube, sie haben es behoben. Die Voreinstellung ist jetzt ...\src\main\resourses und wenn Sie dort keine Manifestdatei haben, wird automatisch eine Datei erstellt.

    – Roy Cohen

    12. Dezember 2020 um 21:41 Uhr

Ich hatte dieses Problem kürzlich und denke, dass diese Schritte einfach zu befolgen sind, wenn bei einer früheren Lösung oder einem Link Details fehlen.

So erstellen Sie eine .jar mit IntelliJ IDEA 14.1.5:

  1. Datei > Alles speichern.
  2. Führen Sie den Treiber oder die Klasse mit der Hauptmethode aus.
  3. Datei > Projektstruktur.
  4. Wählen Sie den Reiter „Artefakte“.
  5. Klicken Sie auf die grüne Plus-Schaltfläche oben im Fenster.
  6. Wählen Sie JAR aus dem Dropdown-Menü Hinzufügen aus. Wählen Sie „Von Modulen mit Abhängigkeiten“
  7. Hauptklasse wählen.
  8. Die Optionsschaltfläche sollte “in Ziel-JAR extrahieren” auswählen. Drücke OK.
  9. Aktivieren Sie das Kontrollkästchen “Build on make”
  10. Drücken Sie Anwenden und OK.
  11. Wählen Sie im Hauptmenü das Build-Dropdown aus.
  12. Wählen Sie die Option Artefakte erstellen.

  • hast du etwas verpasst? Es gibt eine Option zum Modul, was das sein soll. In meinem Fall wird aus Sicherheitsgründen JAR, aber JVM durch Fehler erstellt.

    – sonus21

    24. Oktober 2015 um 21:26 Uhr

  • Ich denke, diese Liste ist alles. Möglicherweise haben Sie etwas mit Ihren Java-Einstellungen, das es aus Sicherheitsgründen stoppt. Hat noch jemand Gedanken dazu?

    – Benutzer5442490

    11. Dezember 2015 um 1:33 Uhr

  • Befolgt das gleiche und ich habe Fehler: Hauptklasse JavaFundamentals.jar konnte nicht gefunden oder geladen werden, wenn diese JAR-Datei ausgeführt wird. Hier erklärt: stackoverflow.com/questions/40636790/…

    – laggerok19

    16. November 2016 um 20:08 Uhr


  • Muss dieser 12-Schritte-Prozess jedes Mal durchgeführt werden, wenn ich ein Glas erstellen möchte, oder merkt sich IntelliJ diese Aktionen, sodass Sie eine Verknüpfung dazu verwenden können?

    – Andy

    13. April 2018 um 16:16 Uhr


Für diejenigen, die wie ich von Bildern profitieren:

Datei -> Projektstruktur

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

Hier sind 2 Beispiele mit maven project, Schritt für Schritt:

Methode 1: Bauen Sie jar mit maven und pom.xml

  1. Datei, neu, Projekt, maven
  2. Erstellen Sie ein Paket, erstellen Sie ein Java-Programm in diesem Paket
    Geben Sie hier die Bildbeschreibung ein
  3. fügen Sie bei pom.xml maven-jar-plugin hinzu.

        <plugin>
            <!-- Build an executable JAR -->
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>3.1.0</version>
            <configuration>
                <archive>
                    <manifest>
                        <addClasspath>true</addClasspath>
                        <classpathPrefix>lib/</classpathPrefix>
                        <mainClass>somePackage.sample</mainClass>
                    </manifest>
                </archive>
            </configuration>
        </plugin>
    

Bildschirmaufnahme:
Geben Sie hier die Bildbeschreibung ein

4. Öffnen Sie das Maven-Projektfeld, indem Sie auf das Suchsymbol klicken und maven eingeben.
Geben Sie hier die Bildbeschreibung ein

  1. Klicken Sie auf „Reinigen“ und dann auf „Installieren“.
    Geben Sie hier die Bildbeschreibung ein

  2. Ihre JAR-Datei wird im Zielordner angezeigt
    Geben Sie hier die Bildbeschreibung ein

  3. Testen Sie Ihr Glas mit java -jar

Geben Sie hier die Bildbeschreibung ein

Methode 2: Erstellen Sie JAR mit Maven ohne pom.xml-Änderung

  1. Datei, neu, Projekt, maven
  2. Erstellen Sie ein Paket, erstellen Sie ein Java-Programm in diesem Paket (wie oben)
  3. Datei -> Projektstruktur -> Projekt Einstellungen -> Artefakte -> Klicken grünes Pluszeichen -> Krug -> Von Modulen mit Abhängigkeiten

Sehr wichtig!

Die MANIFEST.MF muss sich in Ihrem Ressourcenordner befinden und die Main.Class muss auf {package}-{class-name-that-contains-main-class} verweisen

Geben Sie hier die Bildbeschreibung ein
Geben Sie hier die Bildbeschreibung ein

  1. Klicken Sie dann im Menü auf Bauen, Artefakte bauen, Bauen

Geben Sie hier die Bildbeschreibung ein

  1. finden Sie das Glas im out-Ordner

Geben Sie hier die Bildbeschreibung ein

  1. starte es 🙂

Geben Sie hier die Bildbeschreibung ein

  • das funktioniert. Können Sie erklären, warum MANIFEST.MF in diesem Verzeichnis sein muss?

    – Ubeogesh

    21. Mai 2020 um 13:38 Uhr

  • Das hilft mir

    – Devendra Singraul

    2. Juni 2020 um 15:53 ​​Uhr

  • Das ist sehr hilfreich! Die zweite Option hat für mich am besten funktioniert. Nur ein kurzes Update: IntelliJ öffnet einen zusätzlichen Assistenten zum Erstellen der Manifestdatei. Auf diese Weise können Sie es erstellen und an der richtigen Stelle platzieren, ohne etwas schreiben zu müssen.

    – Microbob

    2. Juli 2020 um 4:30 Uhr

  • Das ist sehr hilfreich

    – Ronit

    27. Mai 2021 um 18:19 Uhr

Wenn ich diese Lösung verwende, kommt dieser Fehler:

java -jar xxxxx.jar

kein Hauptmanifestattribut in xxxxx.jar

und Lösung ist:

Sie müssen das Manifest-Verzeichnis ändern:

<project folder>\src\main\java 

Java auf Ressourcen umstellen

<project folder>\src\main\resources

  • das funktioniert. Können Sie erklären, warum MANIFEST.MF in diesem Verzeichnis sein muss?

    – Ubeogesh

    21. Mai 2020 um 13:38 Uhr

  • Das hilft mir

    – Devendra Singraul

    2. Juni 2020 um 15:53 ​​Uhr

  • Das ist sehr hilfreich! Die zweite Option hat für mich am besten funktioniert. Nur ein kurzes Update: IntelliJ öffnet einen zusätzlichen Assistenten zum Erstellen der Manifestdatei. Auf diese Weise können Sie es erstellen und an der richtigen Stelle platzieren, ohne etwas schreiben zu müssen.

    – Microbob

    2. Juli 2020 um 4:30 Uhr

  • Das ist sehr hilfreich

    – Ronit

    27. Mai 2021 um 18:19 Uhr

Es ist wahrscheinlich etwas spät, aber ich habe es so gelöst -> mit winrar öffnen und ECLIPSEF.RSA und ECLIPSEF.SF im META-INF-Ordner löschen, außerdem “Main-class: main_class_name” (ohne “.class”) ) im MANIFEST.MF. Stellen Sie sicher, dass Sie nach der letzten Zeile zweimal “Enter” gedrückt haben, sonst funktioniert es nicht.

  • Informationen zu signierten Abhängigkeiten finden Sie in dieser Antwort: stackoverflow.com/questions/41746177/…

    Benutzer2241537

    16. Mai 2017 um 6:12 Uhr

  • Was für ein verrücktes Problem. Irgendeine Idee, warum das passiert oder wie man es beheben kann? Das fühlt sich hackig an

    – Andreas Nr

    21. April 2018 um 22:42 Uhr

1450050cookie-checkWie erstellt man richtig JARs aus IntelliJ IDEA?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy