英文:
why -cp has no effect when used with -jar option?
问题
我使用以下命令启动我的应用程序 java -cp 依赖Jar路径 -jar MyJar.jar
。但它找不到依赖Jar中的类,导致了 java.lang.NoClassDefFoundError
错误。然后我在我的代码中打印了类路径,发现依赖Jar路径并未出现在类路径中。于是我将依赖Jar路径添加到我的Jar文件的 MANIFEST.MF 中的 Class-Path
头部,并使用 java -jar MyJar.jar
启动我的应用程序,这样就正常工作了。
因此,我的问题是,当同时使用 -cp
和 -jar
时,-cp
是否会生效?如果不生效,除了设置 Class-Path
头部之外,我如何在运行我的Jar文件时设置类路径?
英文:
I launch my application with java -cp dependencyJarPath -jar MyJar.jar
. But it can not find the class in my dependencyJar and gives me java.lang.NoClassDefFoundError
. Then I print the classpath in my code and find that dependencyJarPath is not on my classpath. Then I add the dependencyJarPath in the Class-Path
header in the MANIFEST.MF of my jar and launch my application with java -jar MyJar.jar
, it worked.
So my question is when use -cp
and -jar
toghter, will -cp
take effect? If it does not take effect, how could I set the classpath when running my jar other than set the Class-Path
header?
答案1
得分: 2
根据这个链接:
http://docs.oracle.com/javase/7/docs/technotes/tools/windows/java.html
>"当您使用此选项时,JAR 文件是所有用户类的源,而忽略其他用户类路径设置。"
如果您不介意在启动应用程序时指定启动类,您可以将您的 JAR 文件添加到类路径并像这样启动它。
java -cp dependencyPath;MyJar.jar My.StartUpClass
英文:
according to this:
http://docs.oracle.com/javase/7/docs/technotes/tools/windows/java.html
>"When you use this option, the JAR file is the source of all user classes, and other user class path settings are ignored."
if you don't mind specifiying the startup class on launching the application, you can add your jar to the classpath and start it like that.
java -cp dependencyPath;MyJar.jar My.StartUpClass
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论