0

我有一个外部库(只有一个名为 org.vinay.dep.DependedClass 的类文件)。它位于其包目录结构中,并且目录 org 位于桌面上。

我有一个名为 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 条目为

    Manifest-Version: 1.0
    Created-By: 1.6.0_05 (Sun Microsystems Inc.)
    Main-Class: com.os.hw.HelloWorld

    并得到了 DependedClass 的NoClassDefFoundError

  2. java -jar a.jar 如下更改清单条目后

    清单版本:1.0
    创建者:1.6.0_05 (Sun Microsystems Inc.)
    主类:com.os.hw.HelloWorld
    类路径:C:/Users/vinay/Desktop

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

当我将外部库打包到 jar 中并在清单文件中使用 jar 名称作为 Class-Path 条目时,它可以工作。有没有办法在不将外部库打包到 jar 的情况下解决这个问题?

4

1 回答 1

1

我认为您不能将-classpath 和-jar 结合使用。你可以这样做:

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

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

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

于 2012-06-07T11:07:07.253 回答