Festlegen von Classpath für die Klassen innerhalb des JAR selbst
Frage
Wenn ich eine Klasse org.foobar.MyClass und wollen es in einer JAR-Datei setzen, muss ich es in der / JAR setzen org / foobar / Verzeichnis oder kann ich es in / bin / org / foobar / und irgendwie angeben / bin / als classpath in der JAR selbst?
Lösung
Die übliche Art und Weise, dass jeder dies tut - so weit habe ich noch nie eine JAR etwas anderes gesehen - ist die Klasse setzen org.foobar.MyClass in der JAR-Datei in das / die JAR org / foobar / Verzeichnis. Ich kann nicht einen guten Grund vorstellen, etwas anders zu tun, als es die normalen Gebrauch dieses JAR behindern würde von niemandem ungewöhnlichen Dinge zu tun.
Andere Tipps
können Sie die Class-Path-Eigenschaft in Ihrem Manifest enthalten, die jar Auflistung Dateien Ihrer Anwendung abhängt. Die Wege werden auf den Standort der ausführbaren JAR betrachtet relativ werden.
Zum Beispiel, wenn Ihr app.jar enthält diese im MANIFEST.MF:
Class-Path: lib1.jar, lib / lib2.jar
Dann erwarten, dass die JVM wird im selben Verzeichnis wie app.jar finden lib1.jar und ein Unterverzeichnis namens lib lib2.jar enthält.
Ich glaube, Sie können dies durch die Manifest-Datei verwendet wird. Wenn ich mich richtig erinnere, können Sie den Speicherort einer bestimmten Datei im Glas an.
Der Name der JAR-Datei hat den Klassennamen übereinstimmen. Es sei denn natürlich Sie eine benutzerdefinierte Class Loader zu tun seltsame Dinge schreiben.
Sie können ein „Verzeichnis“ im JAR-Datei geben Sie eine jar URL. Allerdings glaube ich nicht URLClassLoader
behandelt dies richtig (nicht ausprobiert).
Eine Funktion, die standardmäßig nicht vorhanden ist, andere JAR-Dateien auf den Classpath hinzufügen, indem sie im Manifest angeben.
Warum würden Sie das letztere tun? Es ist einfacher, es nur in dem richtigen Verzeichnis zu setzen, basierend auf dem Paketnamen, die die Manifest-Datei oder tun andere Art von speziellen Einstellungen bearbeiten vermeiden.