668 Stimmen

Wie baut man Jars aus IntelliJ richtig?

Ich habe ein Projekt, das ein einzelnes Modul und einige Abhängigkeiten enthält. Ich möchte eine Jar-Datei in einem separaten Verzeichnis erstellen, die 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 drehe, die Ausgabe meines Moduls erscheint leer (außer einer META-INF-Datei).

801voto

simao Punkte 12981

So erstellen Sie ein jar mit IntelliJ 10 http://blogs.jetbrains.com/idea/2010/08/quickly-create-jar-artifact/

File -> Project Structure -> Project Settings -> Artifacts -> Klicken green plus sign -> Jar -> From modules with dependencies...

Damit wird das "Skelett" festgelegt, in dem die Jar-Datei gespeichert werden soll. Um es tatsächlich zu erstellen und zu speichern, gehen Sie wie folgt vor:

Extrahieren in das Ziel-Jar

OK

Build | Build Artefakt | Build

Versuchen Sie, die .jar-Datei zu extrahieren von

Projektname | out | Artefakte | Projektname_jar | Projektname.jar

12 Stimmen

Es schlägt fehl, wenn einige Klassen in Ihrem eingeschlossenen jar mit RSA signiert sind.

0 Stimmen

Der Link ist tot. Haben Sie eine Kopie dieses Artikels?

0 Stimmen

Dadurch wird eine JAR-Datei erstellt, die nur die Klassendateien (und die Struktur) enthält. Ich verwende gradle.

379voto

Zsolt Tolvaly Punkte 3208

Das ist auch im Jahr 2017 noch ein Thema, ich hoffe, es hilft jemandem da draußen! Ich habe 2 Möglichkeiten gefunden, funktionierende jar-s unter IntelliJ 2017.2 zu erstellen

1. Erstellen eines Artefakts aus IntelliJ:

  • Gehen Sie zur Projektstruktur:

File menu

  • Erstellen Sie ein neues Artefakt:

Create a new artifact

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

enter image description here

Sie müssen das Manifestverzeichnis ändern:

<project folder>\src\main\java 

Ersetzen Sie "java" durch "resources".

<project folder>\src\main\resources

So sollte es aussehen:

correct way for new manifest

  • Dann wählen Sie die Abhängigkeiten aus, die in Ihre jar-Datei gepackt werden sollen, oder in der Nähe Ihrer jar-Datei

  • Um Ihr Artefakt zu erstellen, gehen Sie zu Artefakte erstellen und wählen Sie "rebuild". Es wird ein "out"-Ordner mit Ihrer jar-Datei und ihren Abhängigkeiten erstellt.

enter image description here

2. Verwendung des maven-assembly-plugin

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:

Create a new run/debug configuration:

  • Wählen Sie eine Anwendung:

Choose application

  • Füllen Sie das Formular aus
  • Hinzufügen des Maven-Ziels "assembly:single" nach dem Build, das als letztes ausgeführt werden soll

enter image description here

Final setup

  • Speichern Sie es und führen Sie dann

enter image description here

Mit diesem Verfahren wird die jar-Datei im Ordner "target" erstellt

JAR file location

15 Stimmen

Ändern manifest Verzeichnis zu src/resources ist der springende Punkt!!! danke~

4 Stimmen

Dieser MANIFEST-Pfad ist der kritischste, danke @Zsolt Tolvaly

6 Stimmen

Ich bekam no main manifest attribute Übernahme der oben genannten Lösungen. Niemand hat erwähnt, dass sich die path to manifest . Vielen Dank!

152voto

user5442490 Punkte 23

Ich hatte vor kurzem dieses Problem und denke, dass diese Schritte einfach zu befolgen sind, wenn eine frühere Lösung oder ein Link fehlt Detail.

Wie erstellt man eine .jar mit IntelliJ IDEA 14.1.5:

  1. Datei > Alles speichern.
  2. Treiber oder Klasse mit der Methode main ausführen.
  3. Datei > Projektstruktur.
  4. Wählen Sie die Registerkarte "Artefakte".
  5. Klicken Sie auf die grüne Plus-Schaltfläche im oberen Bereich des Fensters.
  6. Wählen Sie JAR aus dem Dropdown-Menü Hinzufügen. Wählen Sie "Aus Modulen mit Abhängigkeiten".
  7. Wählen Sie die Hauptklasse.
  8. Die Optionsschaltfläche sollte auf "Extrahieren in die Ziel-JAR" eingestellt sein. Drücken Sie OK.
  9. Markieren Sie das Kästchen "Build on make".
  10. Drücken Sie Übernehmen und OK.
  11. Wählen Sie im Hauptmenü das Dropdown-Menü Build.
  12. Wählen Sie die Option Artefakte erstellen.

1 Stimmen

Haben Sie etwas verpasst? Es gibt eine Option über Modul, was sollte das sein. In meinem Fall ist es JAR erstellen, aber JVM durch Fehler aufgrund von Sicherheit.

0 Stimmen

Ich denke, diese Liste ist alles. Vielleicht haben Sie etwas mit Ihren Java-Einstellungen, die es aus Sicherheitsgründen verhindern. Hat noch jemand eine Idee dazu?

0 Stimmen

Ich habe das Gleiche getan und habe einen Fehler: Beim Ausführen dieser Jar-Datei konnte die Hauptklasse JavaFundamentals.jar nicht gefunden oder geladen werden. Wird hier erklärt: stackoverflow.com/questions/40636790/

51voto

kgui Punkte 3859

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

File -> Project Structure

enter image description here

enter image description here

enter image description here

enter image description here

7 Stimmen

@samuelowino Ich schätze es nicht, dass du das sagst. Erklären Sie, was "überhaupt nicht funktioniert".

1 Stimmen

Hey @Crt Ich habe nicht die richtige Jar-Datei überprüft, anscheinend hat Inteliji zwei Jar-Dateien in verschiedenen Verzeichnissen erzeugt, Entschuldigung, mein Fehler, Ihre Lösung funktioniert, danke

0 Stimmen

@Crt Ich habe die oben genannten Schritte versucht, aber ich erhalte weiterhin kein Hauptmanifest-Attribut in myFile-0.1.jar

37voto

rrr Punkte 119

Hier sind 2 Beispiele mit Maven-Projekt, Schritt für Schritt:

Methode 1: Jar mit Maven und pom.xml erstellen

  1. Datei, neu, projekt, maven
  2. ein Paket erstellen, ein Java-Programm innerhalb dieses Pakets erstellen enter image description here
  3. in pom.xml, maven-jar-plugin hinzufügen.

        <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>

Bildschirmfoto: enter image description here 4. Öffnen Sie das Maven-Projektfeld, indem Sie auf das Suchsymbol klicken und maven eingeben, enter image description here

  1. Klicken Sie auf "Reinigen" und dann auf "Installieren enter image description here

  2. Ihre jar-Datei wird im Zielordner angezeigt enter image description here

  3. Testen Sie Ihr Gefäß mit java -jar

enter image description here

Methode 2: Build jar mit maven ohne pom.xml-Änderung

  1. Datei, Neu, Projekt, Maven
  2. ein Paket erstellen, ein Java-Programm in diesem Paket erstellen (wie oben)
  3. File -> Project Structure -> Project Settings -> Artifacts -> Klicken green plus sign -> Jar -> From modules with dependencies

Sehr wichtig!

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

enter image description here enter image description here

  1. dann im Menü auf build klicken, Artefakte bauen, build

enter image description here

  1. das jar im Ordner out finden

enter image description here

  1. lass es laufen :)

enter image description here

0 Stimmen

Das funktioniert. Können Sie erklären, warum MANIFEST.MF in diesem Verzeichnis liegen muss?

0 Stimmen

Das hilft mir

0 Stimmen

Das ist sehr hilfreich! Die zweite Option hat bei mir am besten funktioniert. Nur ein kurzes Update: IntelliJ öffnet einen zusätzlichen Assistenten, um die Manifestdatei zu erstellen. Dies ermöglicht es Ihnen, es zu erstellen und platzieren Sie es an der richtigen Stelle, ohne etwas zu schreiben.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X