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

时间:2011-12-06 06:20:04

标签: java classpath

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

java -cp .;./* com.foo.MainClass

代码执行并运行。

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

java -cp .;./* -jar myjar.jar

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

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

3 个答案:

答案 0 :(得分:6)

来自this

  

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

答案 1 :(得分:0)

您需要自己的类加载器来处理这个问题。 -jar仅尊重清单中的信息,并且不允许使用通配符。

您可能会发现可重新加载的类的示例很有用:http://www.exampledepot.com/egs/java.lang/ReloadClass.html

答案 2 :(得分:0)

Here就这个问题进行了很好的讨论。