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

0voto

Zhwt Punkte 376

Falls Sie diese Antwort lesen, weil Sie den Fehler "Ressourcendatei nicht gefunden" haben, versuchen Sie Folgendes:

  1. Datei -> Projektstruktur -> Artiface -> Neu, Typ ist Andere .
  2. Geben Sie ihm einen schönen Namen, und im Output Layout , drücken Create Archive um ein neues jar zu erstellen, und geben Sie ihm einen schönen Namen ;)
  3. Klicken Sie auf das soeben hinzugefügte Gefäß, fügen Sie Ihre kompilierte Modulausgabe in das Gefäß.
  4. Klicken Sie erneut auf das Jar, wählen Sie im unteren Bereich Ihren Projektpfad und fügen Sie Manifest File dann richtig einstellen Main Class y Class Path .
  5. Klicken Sie auf Add Library Files und wählen Sie die Bibliotheken aus, die Sie benötigen (Sie können mit Ctrl + A um alle auszuwählen).
  6. Build -> Build Artifact -> Clean & Build und sehen Sie, ob der Fehler verschwunden ist.

0voto

Anmol Jain Punkte 89

Ich habe die meisten der gegebenen Antworten ausprobiert, aber in meinem Fall wurde der Ordner "out" (der die jar-Datei enthält) nicht erstellt. Also hat dies die Arbeit erledigt:

Erstellen -> Artefakte erstellen -> (Sie sehen den Klassennamen) -> Erstellen

Nun wurde der Ordner "out" erstellt, in dem sich die jar-Datei befindet.

0voto

Chris Punkte 918

Falls Sie versuchen, ein Jar mit Kotlin zu erstellen, müssen Sie eine src/main/java und verwenden Sie diesen Ordner als Speicherort für den META-INF-Ordner.

0voto

Mike Nakis Punkte 49916

Einige der anderen Antworten sind nutzlos, denn sobald Sie das IntelliJ IDEA-Projekt aus dem Maven-Projekt wieder importieren, gehen alle Änderungen verloren.

Die Erstellung des Jar muss durch eine Run/Debug-Konfiguration ausgelöst werden, nicht durch die Projekteinstellungen.

Jetbrains hat eine schöne Beschreibung, wie Sie dies erreichen können hier:

https://www.jetbrains.com/help/idea/maven.html

Scrollen Sie nach unten zum Abschnitt "Konfigurieren von Auslösern für Maven-Ziele".

(Der einzige Nachteil ihrer Beschreibung ist, dass ihre Screenshots im Standard-Schwarz-auf-Weiß-Farbschema statt im super-geilen Darcula-Theme sind. Igitt!)

Im Grunde genommen öffnen Sie das "Maven Projects"-Panel, suchen das Projekt, welches Sie interessiert (in Ihrem Fall das Projekt, welches Ihr Jar erstellt), finden darunter das Maven Goal, welches Sie ausführen möchten (normalerweise erstellt das "Package"-Goal Jars), öffnen das Kontextmenü (Rechtsklick auf einem Windows-Rechner) und es gibt die Option "Execute before Run/Debug...", welche Sie auswählen können und es wird Sie von dort aus an die Hand nehmen. Wirklich einfach.

0voto

Wenn Sie in Ihrem Projekt Bibliotheken von Drittanbietern verwenden oder wenn Sie Probleme mit der korrekten Erstellung der Datei MANIFEST.MF haben, kann es zu Konflikten kommen, wenn Sie JAR-Dateien ausführen, die mit

File > Project Structure > Artifacts > '+' > JAR > From modules with dependencies > .....

oben genannten Methode.

Stattdessen empfehle ich Ihnen, eine leere JAR-Datei zu erstellen und alle anderen Elemente manuell in die Ausgabewurzel einzufügen. Ein wunderbarer Blog-Artikel für diese Methode kann hier gefunden werden: http://karthicraghupathi.com/2016/07/10/creating-an-executable-jar-in-intellij-idea/ Ich habe die dort genannten Schritte ausprobiert, und bei mir hat alles geklappt!

0 Stimmen

Danke, das hat mir geholfen! Es scheint einen Fehler in Intellij zu geben, bei dem das Manifest des Projekts im JAR durch ein Standardmanifest überschrieben wird, wenn Sie "JAR" als Artefakttyp statt "Other" auswählen.

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