wake-up-neo.com

Hinzufügen einer externen Bibliothek zum Artefaktglas in IntelliJ IDEA

Wie kann ich einem Projekt in IntelliJ IDEA eine externe Bibliothek hinzufügen, sodass beim Erstellen eines Artefakts immer noch Zugriff auf die Klassen in der Bibliothek besteht? 

Ich habe ein neues Jar-Artefakt aus der Projektstruktur erstellt, dann die externe JAR zu den Bibliotheken hinzugefügt, sie in der Modulliste überprüft und schließlich der Ausgabe für das Artefakt hinzugefügt. Nichts davon funktioniert. Wenn ich meine Anwendung erstelle und versuche, sie auszuführen, wird ein Fehler ausgegeben:

Exception in thread "main" Java.lang.NoClassDefFoundError: <path of the class trying to use>

Was fehlt mir, oder mache ich das völlig falsch?

Sie haben hier zwei Möglichkeiten:

  • extrahieren Sie die Abhängigkeit in die Artefakt-Dose, sodass die App die einzige ausführbare Dose mit allen Abhängigkeiten ist
  • verknüpfen Sie die abhängigen Gläschen über den Manifest.MF und kopieren Sie sie in die Nähe des Hauptglases der Anwendung

Ich habe ein Beispielprojekt vorbereitet, das beide Ansätze demonstriert: HelloWithDependencies.Zip .

Die Artefakte werden in out\single- und out\linked-Verzeichnissen erzeugt.

Relevante Konfigurationen:

 single

 linked

9
CrazyCoder

Wenn Sie Maven zum Erstellen Ihrer Anwendung verwenden, ist dies nicht der richtige Weg, um externe Bibliothek hinzuzufügen. Sie sollten entweder

  1. Führen Sie eine Installation Ihrer Bibliothek durch, wie unten mvn install:install-file -Dfile=myJar.jar -DgroupId=com.yourproject -DartifactId=yourproject -Dversion={version} -Dpackaging=jar
  2. Verwenden Sie den Systempfad wie erklärt hier .

Option 1 wird bevorzugt, da Sie in Ihrem Projekt kein Glas halten müssen.

1
GauravJ