Java:从jar加载类和引用的jar

时间:2012-01-16 10:45:59

标签: java jar classpath

想象一下,有一个jar(名为 lib.jar ),它包含一个类和清单文件。

该类是MyLibClass1。 MyLibClass1类包含单个公共静态方法execute()。

清单文件有一行“Class-Path:”,引用其他jar文件( jar1.jar jar2.jar

MANIFEST.MF位于 lib.jar 的META-INF中,包含:

Class-Path:jar1.jar jar2.jar

这些罐子在一些项目MyProject中使用,并且位于它的libs目录中。

该项目有一个主类 Main ,方法为 main ,只有一行:

MyLibClass1.execute();

问题在于,当我尝试调用MyProject的Main类时,JVM说它无法在 lib.jar 中找到 的MyLibClass1类

java -cp libs / *; bin Main

有什么建议吗?

更新

java -version
java版“1.6.0_24”
Java(TM)SE运行时环境(版本1.6.0_24-b07)
Java HotSpot(TM)64位服务器VM(版本19.1-b02,混合模式)

libs文件夹包含 lib.jar jar1.jar jar2.jar

关于Main.class的位置有一个很好的评论。 实际上是bin目录中的类,所以我必须更改java执行命令。

java -cp libs / *; bin Main

3 个答案:

答案 0 :(得分:0)

如果当前目录为bin,那么您应该运行java -cp ".;../libs/*" Main

答案 1 :(得分:0)

尝试在“bin”之后添加分号。

java -cp libs/*;bin; Main

答案 2 :(得分:0)

我通过从lib.jar文件中删除manifest来解决了这个问题。

因此有一个令人困惑的结论:jar的“Class-Path:”会隐藏jar本身的类。

欢迎反驳这一陈述。