我有一个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。如何在此方案中使第二个命令起作用?
答案 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就这个问题进行了很好的讨论。