我正在为控制台应用程序创建一个小接口,因此我正在执行控制台应用程序,然后通过命令行运行命令。
我的问题是我正在执行的JAR需要提供一个JAR库的路径。但是我不知道如何正确传递这些信息。根据我在JNLP File Syntax中找到的信息,我应该将所有外部JAR添加到JNLP文件中的JAR路径。
此文件如下所示:
<resources>
<j2se version="1.5+"/>
<jar href="uToolGUI.jar" main="true"/>
<jar href="uTool.jar"/>
<jar href="jpcap.jar"/>
</resources>
我正在执行的这行是:
java.exe -cp lib\jpcap.jar;. -jar D:\jarCreateLib\uTool.jar gen
所以我想这个问题归结为 - 我如何以某种方式引用我想要的库,以便Web Start允许我这样做。
这通过Eclipse执行时就像一个魅力。如果我必须通过java -jar...
运行它,我必须添加-Djnlp.java.library.path=lib
,但是当我尝试通过Java Web Start执行它时,这没有任何区别。
提前感谢所有回复和回复。
答案 0 :(得分:2)
命令java -jar …
使用清单中找到的Class-Path
,而不是-cp
选项中指定的路径。根据建议here,您需要一个清单条目,例如:
Class-Path: lib/uToolGUI.jar lib/uTool.jar lib/jpcap.jar
如JNLP File Syntax中所述,如果可以从main-class
清单条目中找到JNLP文件中指定的第一个JAR文件,则可以省略JNLP文件中的Main-Class
属性。 JAR文件。
答案 1 :(得分:1)
JNLP片段假定Jars位于相同(未命名)目录(代码库)中,而命令行调用指向lib
目录中的一个,&amp; jarCreateLib
中的另一个。
我强烈建议您使用JaNeLA检查JNLP。它检查的一件事是JNLP中声明的资源相对于指定的代码库是可用的。