I am trying to create an index creation in a jar file. However, this fails:
$ 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)
The obvious workaround is simple:
$ cp /usr/share/java/vtk.jar /tmp/vtk-dicom/bin/lib/
However, it is ugly and error prone. Is there any other way that I can tell jar -i where to look for another vtk.jar location? I will need a portable solution that runs on Windows / Linux / MacOSX.
For information, the manifest is set to:
$ cat ./Source/java/manifest.txt Class-Path: vtk.jar
For information, if I change it to:
$ cat ./Source/java/manifest.txt Class-Path: /usr/share/java/vtk.jar
This gives a slightly different error:
$ 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)
For reference:
$ 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)
source share