解析外部依赖的类路径

时间:2012-06-07 10:57:44

标签: java jar classpath manifest noclassdeffounderror

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

  1. java -classpath C:/Users/vinay/Desktop -jar a.jar manifest.mf条目

    清单 - 版本:1.0
    创建时间:1.6.0_05(周日 Microsystems Inc.)
    主类:com.os.hw.HelloWorld

    并为 DependedClass

  2. 获得NoClassDefFoundError 更改清单条目后
  3. java -jar a.jar ,如下所示

    清单 - 版本:1.0
    创建时间:1.6.0_05(周日     Microsystems Inc.)
    主班:com.os.hw.HelloWorld
        Class-Path:C:/ Users / vinay / Desktop

    但是这次它为 HelloWorld 抛出了NoClassDefFoundError 类本身

  4. 当我将外部lib打包到jar中并在清单文件中使用jar名称作为Class-Path条目时,它可以工作。有没有办法解决这个问题而无需将外部lib打包到jar中?

1 个答案:

答案 0 :(得分:1)

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

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

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

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