2015-04-24 8 views
6

Ich versuche ein einfaches index creation auf einer JAR-Datei. Doch es scheitert mit:Index zu JAR-Datei hinzufügen, externe JAR-Datei referenzierend

$ jar -i /tmp/vtk-dicom/bin/lib/vtkdicom.jar 
java.io.FileNotFoundException: /tmp/vtk-dicom/bin/lib/vtk.jar (No such file or directory) 
    at java.util.zip.ZipFile.open(Native Method) 
    at java.util.zip.ZipFile.<init>(ZipFile.java:215) 
    at java.util.zip.ZipFile.<init>(ZipFile.java:145) 
    at java.util.jar.JarFile.<init>(JarFile.java:154) 
    at java.util.jar.JarFile.<init>(JarFile.java:91) 
    at sun.tools.jar.Main.getJarPath(Main.java:1052) 
    at sun.tools.jar.Main.getJarPath(Main.java:1068) 
    at sun.tools.jar.Main.genIndex(Main.java:1084) 
    at sun.tools.jar.Main.run(Main.java:269) 
    at sun.tools.jar.Main.main(Main.java:1177) 

Auf offensichtliche Behelfslösung ist einfach:

$ cp /usr/share/java/vtk.jar /tmp/vtk-dicom/bin/lib/ 

Allerdings ist es hässlich und fehleranfällig. Gibt es eine andere Möglichkeit, ich kann jar -i wo nach einem anderen vtk.jar Standort suchen? Ich brauche eine portable Lösung, die unter Windows/Linux/MacOSX funktioniert.

$ cat ./Source/java/manifest.txt 
Class-Path: /usr/share/java/vtk.jar 

Es gibt eine etwas andere Fehler

:

Informationen das Manifest ist eingestellt auf:

$ cat ./Source/java/manifest.txt 
Class-Path: vtk.jar 

Informationen, wenn ich es ändern

$ jar -i /tmp/vtk-dicom/bin/lib/vtkdicom.jar 
java.io.FileNotFoundException: /tmp/vtk-dicom/bin/lib/usr/share/java/vtk.jar (No such file or directory) 
    at java.util.zip.ZipFile.open(Native Method) 
    at java.util.zip.ZipFile.<init>(ZipFile.java:215) 
    at java.util.zip.ZipFile.<init>(ZipFile.java:145) 
    at java.util.jar.JarFile.<init>(JarFile.java:154) 
    at java.util.jar.JarFile.<init>(JarFile.java:91) 
    at sun.tools.jar.Main.getJarPath(Main.java:1052) 
    at sun.tools.jar.Main.getJarPath(Main.java:1068) 
    at sun.tools.jar.Main.genIndex(Main.java:1084) 
    at sun.tools.jar.Main.run(Main.java:269) 
    at sun.tools.jar.Main.main(Main.java:1177) 

Für Referenz:

$ java -version 
java version "1.7.0_75" 
OpenJDK Runtime Environment (IcedTea 2.5.4) (7u75-2.5.4-2) 
OpenJDK 64-Bit Server VM (build 24.75-b04, mixed mode) 
+0

, setzen Sie den Inhalt Ihrer Datei MANIFEST –

Antwort

1

Ich habe keine Dokumentation zu diesem Thema gefunden, aber es scheint, wenn Sie die anderen Gläser nach dem Haupt Glas liefern zu arbeiten:

jar -i main.jar other.jar 

Für Ihr Beispiel:

cd /tmp/vtk-dicom/bin/lib/ 
jar -i vtkdicom.jar /usr/share/java/vtk.jar 

Die andere JAR-Dateien werden nicht geändert. Für das Manifest sind keine Änderungen erforderlich.

Edit:

Die erzeugte INDEX.LIST Datei enthält den vollständigen Pfad, den Sie für „main.jar“ angeben, also habe ich mein Beispiel modifizierte erste zu „cd“ in das Verzeichnis. Andernfalls funktioniert die JAR-Datei möglicherweise nicht, nachdem sie an ihrem endgültigen Speicherort installiert wurde.

Alternativ kann "jar -i" nach der Installation in der Datei ausgeführt werden. Bitte

-1

Zuerst müssen Sie in Ihrer Datei MANIFEST den Class-Path für die JAR-Datei angeben. Die Option i dient nur zum Erstellen einer INDEX.LIST-Datei, die das Laden von Klassen optimiert.

Also müssen Sie in Ihren MANIFEST den gesamten Pfad zum JAR einfügen.

Verwandte Themen