Ich versuche, JAR-Datei meiner App basierend auf Maven zu bauen. Also muss ich keine externen Jar-Bibliotheken in meinen Build aufnehmen. Ich brauche, dass meine Anwendung diese externe Abhängigkeit in Laufzeit vom lokalen Maven-Repository oder vom lokalen Ordner gibt, diese enthalten diese externen Bibliotheken. ich konfigurieren meine pom-Datei für diese Abhängigkeit wie folgt aus:Wie man ein maven ausführbares Glas mit externer Glasbibliothek baut?
<profiles>
<profile>
<id>compile</id>
<dependencies>
<dependency>
<groupId>groupId</groupId>
<artifactId>some.artifact</artifactId>
<version>1.0</version>
</dependency>
</dependencies>
</profile>
und versucht, dieses Glas mit diesem Präfix -Pcompile
auszuführen. Ich benutze diese answer.
Aber in der Laufzeit, wenn ich versuche, eine Methode auszuführen, die diese externe Bibliothek verwendet, habe ich java.lang.NoClassDefFoundError
mit dem Namen meiner Klasse aus meiner externen Bibliothek.
Also, wie kann ich einen Build erstellen, der externe JAR-Bibliotheken aus dem lokalen Speicher verwendet?
wie hier: https://stackoverflow.com/questions/11758594/how-do-i-put-all-required-jar-files-in-a -library-folder-inside-the-final-jar-fil – PeterMmm
Es ist viel häufiger üblich, eine eigenständige ausführbare JAR-Datei zu erstellen, die alle Abhängigkeiten enthält. Erleichtert die Bereitstellung so viel einfacher und sicherer. https://stackoverflow.com/questions/574594/how-can-i-create-an-executable-jar-with-dependencies-using-maven?rq=1 – Thilo
@Thilo: Dies funktioniert nicht, wenn Sie eine Bibliothek haben wie Bouncycastle in den Abhängigkeiten, da es ein signierter Krypto-Provider ist und jar-with-dependencies die jar-Signaturen zum Absturz bringt. – Robert