为什么 -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