Externe Library in Jar einbinden

Miness

Mitglied
Hi Community,

ich habe eine kleine Library geschrieben und verwende darin Google Gson, um Einstellungen im JSON-Format exportieren zu können.

Um Gson einzubinden, habe ich die Lib in mein Eclipse-Projekt nach lib/gson-1.7.1.jar kopiert.

Jetzt geht es ans Packen meines Projekts in ein eigenes Jar-File.
Wie macht ihr das jeweils, liefert ihr externe Libraries immer direkt als Jar in eurem Jar mit? Oder gebt ihr an, dass euer Projekt Abhängigkeiten hat und diese vom User selber heruntergeladen und eingebunden werden müssen? Oder entpackt ihr die Library und kopiert die benötigten Klassen einfach so in euer Jar (meines Erachtens sollte auch das lizenzrechtlich kein Problem sein, Gson steht unter der Apache Lizenz)?

Wenn das direkte Mitliefern als Jar die beste Möglichkeit wäre, wie exportiert ihr das Projekt dann jeweils mit Eclipse? Als "Runnable Jar"?

Danke für euren Rat!
 

Wildcard

Top Contributor
Keine der von dir genannten Methoden ist sonderlich sinnvoll.
Üblerweise liefert man die eigenen Jars und die third party Libraries gemeinsam (zB als Zip) aus.
Third Party Libraries wandern dabei oft in ein 'lib' Verzeichnis.
 

Miness

Mitglied
Nun ja, ich hatte gedacht, dass es in diese Richtung irgend eine sinnvolle Möglichkeit gibt (damit ich eben nur ein Jar-File veröffentlichen kann). Mit dem Entpacken der Library würde es funktionieren, finde ich aber auch nicht besonders schön.

Dann werde ich wohl deine Lösung umsetzen, danke. Auf dem obersten Verzeichnis im ZIP alle eigenen Jars, und im Unterordner "lib" des ZIPs alle Third Party Libs.
 

Miness

Mitglied
Ein Jar bringt viele Nachteile mit sich. Wieviele ernsthafte Programme kennst du, die aus nur einer Datei bestehen?

Natürlich gibt es wenige ausführbare Programme, die aus einer einzelnen Datei bestehen. Aber für eine Library, die ja eigentlich kein Programm an sich ist, wäre es eben schön, wenn der User nur ein Jar in sein Projekt einbinden könnte und alles funktionieren würde.

Welche Nachteile (ausser dem mit den externen Libs) sprichst du an? Ich finde Jars sonst eigentlich ziemlich praktisch.
 

mvitz

Top Contributor
Wildcard hat nichts gegen JAR (behaupte ich mal), sondern wollte damit nur ausdrücken, dass JAR in JAR suboptimal ist.

Stell dir vor, du nutzt Gson 2.x und jemand der deine Library nutzt, möchte jetzt lieber Gson 3.x nutzen (mit 2.x kompatibel). Wenn du jetzt bei dir GSON im JAR drin hast, kann er unter umständen das update auf Gson 3.x nur sehr schwer machen.

Zudem weiß ich garnicht, ob beim vielbesagtem JAR-in-JAR eine Verwendung als Bibliothek funktioniert.
 

Miness

Mitglied
@mvitz:

Danke, das ist natürlich ein Argument. ;)

Mittlerweile habe ich auch irgendwo gelesen, dass ein Jar in einem Jar gar nicht funktioniert. Ich werde also deshalb jetzt definitiv die Methode von Wildcard verwenden.
 

Wildcard

Top Contributor
Mittlerweile habe ich auch irgendwo gelesen, dass ein Jar in einem Jar gar nicht funktioniert.
Richtig, das geht nur mit speziellen Classloader. Auch das repacking (also Bibltiotheken auspacken und in die eigene jar packen) kommt mit vielen Problemen daher. Ein paar davon:
  • kann lizenztechnisch problematisch sein
  • verkompliziert den Buildprozess
  • es besteht die Möglichkeit das sich Klassen oder Resourcen überschreiben
  • das entstandene Archiv ist ein Mix mehrere Lizenzen. Würde ich nicht mit der Kneifzange anfassen
  • Lib X lässt sich nicht mehr gegen Lib X mit wichtigem Bugfix austauschen
 

Miness

Mitglied
@Wildcard:

Danke für die Erläuterungen. Habe mir schon gedacht, dass es da einige Punkte gibt, die gegen ein Entpacken einer Library sprechen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Externe Bibliotheken modularisieren Tools - Maven, Gradle, Ant & mehr 5
X externe Jars mit Launch4j Tools - Maven, Gradle, Ant & mehr 1
S Maven Externe Jar hinzufügen Tools - Maven, Gradle, Ant & mehr 3
H Maven externe resource hinzufügen Tools - Maven, Gradle, Ant & mehr 3
J externe jar ausserhalb des LIB-Verzeichnis Tools - Maven, Gradle, Ant & mehr 2
P Maven2 - wie mache ich externe Jar Dateien zu Artifacts? Tools - Maven, Gradle, Ant & mehr 15
D ANT - javac + externe Jar + sourcepath Tools - Maven, Gradle, Ant & mehr 6
J Externe Dateien im jar File Tools - Maven, Gradle, Ant & mehr 4
B Applet und Jar - wie binde ich externe Jars ein Tools - Maven, Gradle, Ant & mehr 1
Meldanor Library aus Git Repo beziehen Tools - Maven, Gradle, Ant & mehr 2
X Maven m2eclipse stellt keinen Maven Library Container zur Verfügung Tools - Maven, Gradle, Ant & mehr 24
D [maven] dll-resource einbinden - library.path setzen Tools - Maven, Gradle, Ant & mehr 4
T Maven: Probleme beim Einbinden der Dependencies Tools - Maven, Gradle, Ant & mehr 9
L Gradle Ein lokales Eclipse Projekt in Gradle dependency einbinden Tools - Maven, Gradle, Ant & mehr 2
yakazuqi Maven Eigene API mit Maven einbinden Tools - Maven, Gradle, Ant & mehr 1
H Maven Dependencies in runnable Jar einbinden Tools - Maven, Gradle, Ant & mehr 16
pkm Wie log4j in einem mvn-basierten Projekt einbinden? Tools - Maven, Gradle, Ant & mehr 2
X Maven Dependencies beim install mit in die Jar einbinden Tools - Maven, Gradle, Ant & mehr 6
S JAX-RS Klasse aus anderen Projekt einbinden Tools - Maven, Gradle, Ant & mehr 0
H Maven HSQLDB in den Maven lifecycle einbinden Tools - Maven, Gradle, Ant & mehr 5
N Webservice Einbinden einer WSDL Tools - Maven, Gradle, Ant & mehr 11
D Jar Datei in HTML einbinden Tools - Maven, Gradle, Ant & mehr 3
K Applet als Jar-Datei in HTML einbinden Tools - Maven, Gradle, Ant & mehr 14
X Maven Abhängigkeiten in die jar einbinden Tools - Maven, Gradle, Ant & mehr 10
F Applet Application in PHP einbinden? Tools - Maven, Gradle, Ant & mehr 5
M Java3D in Eclipse einbinden Tools - Maven, Gradle, Ant & mehr 4
A Applet Applet startet nach Einbinden auf Website nicht Tools - Maven, Gradle, Ant & mehr 4
H Java Applet Problem beim einbinden in HTML Tools - Maven, Gradle, Ant & mehr 3
nabla Einbinden von externen Java und C Bibliotheken Tools - Maven, Gradle, Ant & mehr 5
reibi Maven : Resourcen NICHT mit einbinden beim Builden Tools - Maven, Gradle, Ant & mehr 10
ruutaiokwu manifest.mf - wie libraries einbinden? Tools - Maven, Gradle, Ant & mehr 7
D Bestehendes Projekt in Eclipse einbinden Tools - Maven, Gradle, Ant & mehr 6
ARadauer jar mit maven einbinden Tools - Maven, Gradle, Ant & mehr 10
C Executable in Jar einbinden Tools - Maven, Gradle, Ant & mehr 3
B Applet (Class-Datei(en)) in Html-Seite einbinden - Clipboard Tools - Maven, Gradle, Ant & mehr 13
G Applet in Jar-Format einbinden? Tools - Maven, Gradle, Ant & mehr 2
zilti Applet einbinden: Problem Tools - Maven, Gradle, Ant & mehr 6
A Hilfe! Java Applet Lake von Anfy - wie in HP einbinden? Tools - Maven, Gradle, Ant & mehr 25
S Applet in Jar umwandeln und dann auf eine Website einbinden Tools - Maven, Gradle, Ant & mehr 6
G Externes .jar in Java Applet einbinden Tools - Maven, Gradle, Ant & mehr 2
G Applet einbinden - was ist falsch? Tools - Maven, Gradle, Ant & mehr 3
G Pop up ins applet einbinden Tools - Maven, Gradle, Ant & mehr 7
G video in applet einbinden Tools - Maven, Gradle, Ant & mehr 2
D Problem beim einbinden von jar und class datei Tools - Maven, Gradle, Ant & mehr 8
E applet in browser einbinden Tools - Maven, Gradle, Ant & mehr 3
K Icons einbinden Tools - Maven, Gradle, Ant & mehr 6
T Java Applets dynamisch einbinden Tools - Maven, Gradle, Ant & mehr 5
M Applet in HTML-Datei einbinden Tools - Maven, Gradle, Ant & mehr 9
D Java-Applet einbinden Tools - Maven, Gradle, Ant & mehr 5
G Applet in die HTML-Datei einbinden Tools - Maven, Gradle, Ant & mehr 3
P Applet in HTML einbinden?? Tools - Maven, Gradle, Ant & mehr 14

Ähnliche Java Themen

Neue Themen


Oben