想象一下,有一个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
这些jar在一些项目MyProject中使用,并且位于它的libs目录中 .
该项目有一个Main类main方法main,只有一行:
MyLibClass1.execute();
问题是,当我尝试调用MyProject的Main类时,JVM说它无法在 lib.jar 中找到 is 的MyLibClass1类 .
java -cp libs / *; bin Main
有什么建议?
UPDATE:
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 回答
尝试在“bin”之后添加分号 .
java -cp libs/*;bin; Main
我通过从lib.jar文件中删除manifest来解决了这个问题 .
因此有一个令人困惑的结论: "Class-Path:" of a jar hides the classes of a jar itself.
欢迎反驳这一说法 .
如果当前目录是
bin
那么你应该运行java -cp ".;../libs/*" Main