在cli中包含jar文件库

时间:2012-05-31 09:28:34

标签: java ant command-line-interface jnlp args

我正在开发一个使用jnlp文件的项目。在那里有如下指定的资源:

[代码]

<resources>
    <jar href="noterik-apu.jar" main="true" download="eager"/>
    <jar href="springfield-tools.jar" download="eager"/>
    <jar href="commons-httpclient-3.1.jar" />
    <jar href="commons-cli-1.2.jar" />
    <jar href="org.apache.commons.codec.jar" />
    <jar href="org.apache.commons.httpclient.jar" />
    <jar href="org.apache.commons.logging.jar" />
    <jar href="swing-worker-1.1.jar" />
    <jar href="log4j-1.2.16.jar" />
    <jar href="dom4j-1.6.1.jar" />
    <jar href="jaxen-1.1.1.jar" />
    <j2se version="1.6+" href="http://java.sun.com/products/autodl/j2se"/>
</resources>

[/代码]

ant构建文件不包含构建.jar中的那些jar文件。我如何在cli中添加这些jar,以便它不会给我“线程中的异常”主“java.lang.NoClassDefFoundError:”?我试过“-cp file1.jar:file2.jar:etc.jar”,但我在互联网上读到你不能使用-cp with -jar ..我怎么能让它工作?

提前感谢!

2 个答案:

答案 0 :(得分:1)

您不应该将jar文件嵌入到另一个jar文件中。只有使用特殊的类加载器才能工作。启动应用时使用-cp选项:

java -cp lib\*:.\myApp.jar com.foo.bar.MyApp

或者按照this page上的说明将jar文件的相对路径包含到myApp.jar的清单中,然后使用java -jar myApp.jar启动您的应用。

答案 1 :(得分:0)

如果您在编译使用时使用的是

$ javac -cp myjar.jar Hello.java

在运行使用时,需要包含当前目录和点

$ java -cp myjar.jar:. Hello