java -jar选项是否改变了classpath选项

mih*_*irg 6 java classpath

我有一个jar文件,它提到了清单中的主要类.当我尝试使用以下命令执行jar时

java -cp .;./* com.foo.MainClass
Run Code Online (Sandbox Code Playgroud)

代码执行并运行.

当我尝试使用以下命令执行jar时

java -cp .;./* -jar myjar.jar
Run Code Online (Sandbox Code Playgroud)

我找到了一些与myjar.jar在同一个文件夹中的jar的类别找不到的execptions.我希望-cp选项将在类路径中包含这些jar.我修改了我的代码来打印java.class.path属性.在第一种情况下,它列出了当前目录中的所有jar,在第二种情况下,它只列出了myjar.jar

我还修改了清单,以便为所有jar添加Class-Path元素.然后第二个命令工作.但是在我的代码中,我正在尝试加载一个名称在命令提示符下提供的aribtrary类,所以我希望类路径包含文件夹中的所有jar.如何在此方案中使第二个命令起作用?

Rag*_*ram 6

这个,

可执行JAR必须通过清单文件的Class-Path标头引用它所需的所有其他依赖JAR.如果使用-jar选项,则JVM将忽略环境变量CLASSPATH和命令行上指定的任何类路径.