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?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top