想象一下,有一个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
答案 0 :(得分:0)
如果当前目录为bin
,那么您应该运行java -cp ".;../libs/*" Main
答案 1 :(得分:0)
尝试在“bin”之后添加分号。
java -cp libs/*;bin; Main
答案 2 :(得分:0)
我通过从lib.jar文件中删除manifest来解决了这个问题。
因此有一个令人困惑的结论:jar的“Class-Path:”会隐藏jar本身的类。
欢迎反驳这一陈述。