我有一个外部库(只有一个名为org.vinay.dep.DependedClass的类文件)。它内部很好 它的包目录结构和目录组织在桌面上。
我有一个名为a.jar的jar,它依赖于我的外部库。
执行 jar -tf a.jar
会给出以下输出
META-INF/
META-INF/MANIFEST.MF
com/
com/os/
com/os/hw/
com/os/hw/HelloWorld.class
com/os/hw/HwUtil.class
我尝试以两种方式运行jar
java -classpath C:/Users/vinay/Desktop -jar a.jar
manifest.mf条目
清单 - 版本:1.0
创建时间:1.6.0_05(周日
Microsystems Inc.)
主类:com.os.hw.HelloWorld
并为 DependedClass
java -jar a.jar
,如下所示
清单 - 版本:1.0
创建时间:1.6.0_05(周日
Microsystems Inc.)
主班:com.os.hw.HelloWorld
Class-Path:C:/ Users / vinay / Desktop
但是这次它为 HelloWorld 抛出了NoClassDefFoundError 类本身
当我将外部lib打包到jar中并在清单文件中使用jar名称作为Class-Path条目时,它可以工作。有没有办法解决这个问题而无需将外部lib打包到jar中?
答案 0 :(得分:1)
我认为你不能把-classpath和-jar结合起来。你可以这样做:
java -cp C:/Users/vinay/Desktop;a.jar com.os.hw.HelloWorld
这假定a.jar位于当前文件夹中(或者您也可以添加a.jar的完整路径)。
将清单的Class-Path条目硬编码到本地计算机上的路径绝不是正确的解决方案:)