首页 文章

解析外部依赖的类路径

提问于
浏览
0

我有一个外部库(只有一个名为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 回答

  • 1

    我认为你不能把-classpath和-jar结合起来 . 你可以这样做:

    java -cp C:/Users/vinay/Desktop;a.jar com.os.hw.HelloWorld
    

    这假定a.jar位于当前文件夹中(或者您也可以添加a.jar的完整路径) .

    将清单的Class-Path条目硬编码到本地计算机上的路径永远不是正确的解决方案:)

相关问题