java-forum.org - Java programmieren aus Leidenschaft
Java 6 Einstieg und professioneller Einsatz
Alter Preis: 34,90 EUR
Jetzt: 0,00 EUR

zzgl. Versandkosten

Zurück   java-forum.org - Java programmieren aus Leidenschaft > Java - Programmierung > Deployment

Deployment Applets, Webstart, Ant, Maven, Build Management, Version Management, Installer

Antwort     Ist dieses Thema erledigt?
Themen-Optionen Thema durchsuchen Ansicht
Alt 29.09.2011, 18:57   #1 (permalink)
Benutzer
int
 
Benutzerbild von Miness
 
Registriert seit: 27.04.2011
Fachbeiträge: 46
Abgegebene Danke: 7
Erhielt 9 Danke für 9 Beiträge
Standard Externe Library in Jar einbinden

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!
Miness ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 29.09.2011, 20:51   #2 (permalink)
Premium-Benutzer
 
Benutzerbild von Wildcard
 
Registriert seit: 10.11.2004
Fachbeiträge: 20.047
Abgegebene Danke: 4
Erhielt 429 Danke für 400 Beiträge
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.
__________________
Take back the Desktop
Wildcard ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Danke sagt:
Miness (30.09.2011)
Alt 29.09.2011, 22:16   #3 (permalink)
Benutzer
int
Themenstarter
 
Benutzerbild von Miness
 
Registriert seit: 27.04.2011
Fachbeiträge: 46
Abgegebene Danke: 7
Erhielt 9 Danke für 9 Beiträge
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 ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 30.09.2011, 00:39   #4 (permalink)
Premium-Benutzer
 
Benutzerbild von Wildcard
 
Registriert seit: 10.11.2004
Fachbeiträge: 20.047
Abgegebene Danke: 4
Erhielt 429 Danke für 400 Beiträge
Ein Jar bringt viele Nachteile mit sich. Wieviele ernsthafte Programme kennst du, die aus nur einer Datei bestehen?
__________________
Take back the Desktop
Wildcard ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 30.09.2011, 07:05   #5 (permalink)
Benutzer
int
Themenstarter
 
Benutzerbild von Miness
 
Registriert seit: 27.04.2011
Fachbeiträge: 46
Abgegebene Danke: 7
Erhielt 9 Danke für 9 Beiträge
Zitat: Wildcard
Beitrag anzeigen
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.
Miness ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 30.09.2011, 08:37   #6 (permalink)
Stammbenutzer
Megabyte
 
Registriert seit: 28.11.2008
Fachbeiträge: 1.548
Abgegebene Danke: 31
Erhielt 186 Danke für 183 Beiträge
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.
__________________
twitter
mvitz ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Danke sagt:
Miness (30.09.2011)
Alt 30.09.2011, 19:33   #7 (permalink)
Benutzer
int
Themenstarter
 
Benutzerbild von Miness
 
Registriert seit: 27.04.2011
Fachbeiträge: 46
Abgegebene Danke: 7
Erhielt 9 Danke für 9 Beiträge
@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.
Miness ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 30.09.2011, 23:50   #8 (permalink)
Premium-Benutzer
 
Benutzerbild von Wildcard
 
Registriert seit: 10.11.2004
Fachbeiträge: 20.047
Abgegebene Danke: 4
Erhielt 429 Danke für 400 Beiträge
Zitat:
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
__________________
Take back the Desktop
Wildcard ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 01.10.2011, 13:30   #9 (permalink)
Benutzer
int
Themenstarter
 
Benutzerbild von Miness
 
Registriert seit: 27.04.2011
Fachbeiträge: 46
Abgegebene Danke: 7
Erhielt 9 Danke für 9 Beiträge
@Wildcard:

Danke für die Erläuterungen. Habe mir schon gedacht, dass es da einige Punkte gibt, die gegen ein Entpacken einer Library sprechen.
Miness ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Antwort     Ist dieses Thema erledigt?

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
(Klassen) externe JAR in Programm einbinden Kel Java Basics - Anfänger-Themen 5 03.05.2011 16:45
jar in jar einbinden milchjeeper Java Basics - Anfänger-Themen 2 04.11.2007 18:18
Jar - Library einbinden - jedoch nur benoetigte Klassen! psyron Deployment 0 16.08.2007 07:29
Eclipse: Externe JARs in eigenes JAR einbinden Leroy42 IDEs und Tools 7 12.08.2007 10:06
externe jar einbinden Kiamur Java Basics - Anfänger-Themen 2 22.09.2005 11:27


Lesezeichen

Forumregeln
Es ist Ihnen erlaubt, neue Themen zu verfassen.
Es ist Ihnen erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:29 Uhr.


Powered by vBulletin® Version 3.8.6 (Deutsch)
Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.2
Thanks for Smilies by smilies.4-user.de