我有一个外部库(只有一个名为org.vinay.dep.DependedClass的类文件) . 它完全在它的包目录结构中,目录org在桌面上 .
我有一个名为a.jar的jar,它依赖于我的外部lib .
执行 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
具有manifest.mf条目的
- java -classpath C:/Users/vinay/Desktop -jar a.jar
清单 - 版本:1.0
创建者:1.6.0_05(Sun Microsystems Inc.)
Main-Class:com.os.hw.HelloWorld
并为 DependedClass 获得NoClassDefFoundError
更改清单条目后
- java -jar a.jar 如下
清单 - 版本:1.0
创建者:1.6.0_05(Sun Microsystems Inc.)
Main-Class:com.os.hw.HelloWorld
类路径:C:/ Users / vinay / Desktop
但是这次它为 HelloWorld 类本身抛出了NoClassDefFoundError
当我将我的外部lib打包到jar并在清单文件中使用jar名称为Class-Path条目时,它可以工作 . 有没有办法解决这个问题而无需将外部lib打包到jar中?
1 回答
我认为你不能把-classpath和-jar结合起来 . 你可以这样做:
这假定a.jar位于当前文件夹中(或者您也可以添加a.jar的完整路径) .
将清单的Class-Path条目硬编码到本地计算机上的路径永远不是正确的解决方案:)