Daniel Thoma: Probleme mit Bibliotheken in JAR-Archiv

Beitrag lesen

Hallo *Markus,

Ich habe nun erfahren, dass dies nicht möglich ist.

Jein, die Classpath-Angabe in der Manifest-Datei bezieht sich nicht auf das jar-Archiv sondern auf das Verzeichnis, in dem es liegt.
Du kannst also eine Verzeichnisstruktur anlegen:
bin/meineanwendung.jar
lib/lib1.jar
lib/lib2.jar
Dann kannst Du ../lib/lib1.jar etc. als Classpath angeben. Das Problem ist natürlich, dass man so eine Anwendung dann nicht mehr als eine einzige jar-Datei ausliefern kann.

Eine andere Möglichkeit ist es, für seine Anwendung ein Startprogramm zu schreiben, dass einen Classloader für das Hauptprogramm und die Bibliotheken enthält und das Hauptprogramm darüber lädt und startet.
Das sollte sich z.B. mittels eines java.net.URLClassLoader und einer jar-URL (hat die Form: jar:file:///path/mein.jar!/blub/datei.txt) relativ einfach machen lassen. Gut möglich, dass es da auch schon irgendwo was fertiges gibt.
Alternativ kannst Du auf Java 7 warten. Dafür ist ein Modulsystem angekündigt inklusive Abhängigkeitsverwaltung etc. Damit wird es dann wahrscheinlich auch möglich sein, mehrere Module in einer jar-Datei auszuliefern.

Grüße

Daniel