向jar文件添加索引,引用外部jar文件

时间:2015-04-24 07:58:08

标签: java jar

我在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

2 个答案:

答案 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的整个路径。