为什么 -cp 在与 -jar 选项一起使用时没有效果?
why -cp has no effect when used with -jar option?
我用 java -cp dependencyJarPath -jar MyJar.jar
启动我的应用程序。但是它在我的 dependencyJar 中找不到 class 并给了我 java.lang.NoClassDefFoundError
。然后我在我的代码中打印 classpath 并发现 dependencyJarPath 不在我的 classpath 上。然后我在 jar 的 MANIFEST.MF 中的 Class-Path
header 中添加 dependencyJarPath 并使用 java -jar MyJar.jar
启动我的应用程序,它起作用了。
所以我的问题是-cp
和-jar
一起使用时,-cp
会生效吗?如果它没有生效,除了设置 Class-Path
header?
之外,我如何在 运行 我的 jar 时设置 classpath
据此:
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."
如果您不介意在启动应用程序时指定启动 class,您可以将您的 jar 添加到 class路径并像这样启动它。
java -cp dependencyPath;MyJar.jar My.StartUpClass
我用 java -cp dependencyJarPath -jar MyJar.jar
启动我的应用程序。但是它在我的 dependencyJar 中找不到 class 并给了我 java.lang.NoClassDefFoundError
。然后我在我的代码中打印 classpath 并发现 dependencyJarPath 不在我的 classpath 上。然后我在 jar 的 MANIFEST.MF 中的 Class-Path
header 中添加 dependencyJarPath 并使用 java -jar MyJar.jar
启动我的应用程序,它起作用了。
所以我的问题是-cp
和-jar
一起使用时,-cp
会生效吗?如果它没有生效,除了设置 Class-Path
header?
据此: 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."
如果您不介意在启动应用程序时指定启动 class,您可以将您的 jar 添加到 class路径并像这样启动它。
java -cp dependencyPath;MyJar.jar My.StartUpClass