我在jar文件上尝试一个简单的index creation。然而它失败了:
mysql
明显的解决方法很简单:
execlp("mysql", "mysql", "-e", "source /single.sql", "-ppasswd", "--host", "10.240.253.155", "Dbname", NULL)
然而,它很丑陋且容易出错。有没有其他方法我可以告诉$ 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)
在哪里搜索不同的$ cp /usr/share/java/vtk.jar /tmp/vtk-dicom/bin/lib/
位置?我需要一个可在Windows / Linux / MacOSX上运行的便携式解决方案。
有关信息,清单设置为:
jar -i
有关信息,如果我将其更改为:
vtk.jar
它给出了一个稍微不同的错误:
$ cat ./Source/java/manifest.txt
Class-Path: vtk.jar
供参考:
$ cat ./Source/java/manifest.txt
Class-Path: /usr/share/java/vtk.jar
答案 0 :(得分:1)
我还没有找到关于此的任何文档,但是如果你在主jar之后提供其他jar,它似乎也有效:
jar -i main.jar other.jar
对于你的例子:
cd /tmp/vtk-dicom/bin/lib/
jar -i vtkdicom.jar /usr/share/java/vtk.jar
其他jar文件未被修改。清单不需要进行任何更改。
编辑:
生成的INDEX.LIST文件包含您为&#34; main.jar&#34;指定的完整路径,因此我将我的示例修改为&#34; cd&#34;先进入目录。否则,jar文件在最终位置安装后可能无法正常工作。
或者,&#34; jar -i&#34;安装后可以在文件上运行。
答案 1 :(得分:-1)
首先,您需要在MANIFEST文件中指定该JAR的Class-Path。 选项 i 它仅用于创建将优化类加载的INDEX.LIST文件。
所以你需要在MANIFEST中输入JAR的整个路径。