在命令行中执行依赖其他jar包的jar包的Java程序

4
我有一个使用外部jar文件的应用程序。我在eclipse中使用它很好。我从eclipse导出jar文件,创建了一个具有Class-Path: ./cab.v1.jar的清单文件,并将两个jar文件放置在同一目录中。我在命令行中运行: java -jar myApp.jar 但是,在cab.v1.jar(另一个jar文件)中的类上遇到了java.lang.NoClassDefFoundError错误。 我还尝试了java -cp . -jar myApp.jar,但没有成功。我做错了什么?
2个回答

6
使用 Manifest文档 ,它不使用./表示相对目录。请尝试只使用以下内容:
Class-Path: cab.v1.jar

请注意,使用 -jar 选项时,-cp 选项将被忽略。

谢谢。我尝试了一下,但没有成功,然后提取了jar文件并发现eclipse没有使用我的在清单文件中放置类路径的方法。我手动操作后它就可以工作了。有什么想法为什么eclipse会这样做吗? - Cratylus
2
你必须使用导出 -> 可运行的 Jar 文件。 - Thorbjørn Ravn Andersen

2
如果您使用-jar选项,则忽略类路径。您可以通过以下方式启动应用程序:
java -cp jar1.jar:jar2.jar mainclass

在 Windows 系统中,类路径分隔符 ":" 应该使用 ";"。


按照您说的尝试了: java -cp cab.v1.jar -jar myApp.jar 但是还是出现相同的错误。请注意,这两个JAR文件在同一个目录中。 - Cratylus
@user38706 我写过,你不能同时使用 -jar 和 -cp。这里有几个选项:http://mindprod.com/jgloss/classpath.html - stacker
抱歉,我的错。无论如何,我提取了jar文件并发现eclipse没有使用我在清单文件中放置的类路径。我手动操作后它可以工作了。有任何想法为什么eclipse会这样做吗? - Cratylus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接