2016-08-04 11 views
0

Ich habe eine Java-Anwendung, die mehrere Bibliotheken von Drittanbietern verwendet. Bis zu diesem Punkt habe ich die Java-Anwendung (unter Verwendung von Eclipse) in ein lauffähiges jar mit den in das jar gepackten Bibliotheken exportiert. Alles war gut, aber es begann mich zu jucken, wie groß das Glas ist. Wenn man bedenkt, dass dieses Glas regelmäßig über ein WAN an Tausende von Arbeitsplätzen verteilt wird, ist es am besten, das Paket so klein wie möglich zu machen. Wo ich gerade bin, habe ich Eclipse, der das ausführbare Jar exportiert und die externen Jar-Bibliotheken in einen Unterordner neben dem Jar legt. Dies hat den Platzbedarf meiner Anwendung erheblich reduziert .... aber ich habe erkannt, dass all diese Jars im Unterordner bereits auf den Systemen existieren, so dass es eine Verschwendung von Speicherplatz zu sein scheint, um eine Kopie von ihnen zu haben neben meiner Bewerbung.Erstellen eines Runnable-Jar, der bereits installierte Thrid-Party-Jars referenziert

Ich würde denken, dass es eine Möglichkeit geben würde, ein ausführbares Jar zu erstellen, das die CLASSPATH-Variable verwendet, um die vorhandenen Bibliotheken zu verwenden, anstatt eine Kopie von ihnen in der Nähe haben zu müssen. Gibt es ... oder noch besser, gibt es einen besseren Ansatz?

Vielen Dank.

Antwort

0

Eine Möglichkeit besteht darin, einen Klassenpfad im Manifest des ausführbaren JARs manuell anzugeben. Klassenpfadeinträge werden als URL relativ zur runnbaren JAR-Position und nicht als absoluter Wert angegeben.

https://docs.oracle.com/javase/8/docs/technotes/guides/jar/jar.html#classpath

Zusätzlich wird, wenn die ausführbare jar ausgeführt wird, die "-cp" Parameter und Umgebungsvariablen CLASSPATH wird ignoriert. Der Klassenpfad wird über die Klasse-Pfad-Zeile im Manifest festgelegt.

http://docs.oracle.com/javase/8/docs/technotes/tools/windows/java.html

Verwandte Themen