幾個小時後,即使在閱讀過大量的文檔和SO問題之後,我仍然在智慧的結尾。我確定我錯過了一些明顯的東西,但我無法弄清楚。運行包含庫jar的jar時出現NoClassDefFoundError
我創建了一些java文件,其中包括帶有主要方法的單個入口點。該類還使用位於com.test.lib.MyLibraryClass.class中的一個「庫」類,位於jar文件mylib.jar中。我正在使用以下ant XML成功構建my jar文件。
<target name="jar" depends="compile">
<jar destfile="${jar.dir}/${jar.name}.jar">
<fileset dir="${classes.dir}" />
<fileset dir="${lib.dir}" />
<manifest>
<attribute name="Main-Class" value="${main-class}" />
<attribute name="Class-Path" value="mylib.jar"/>
</manifest>
</jar>
</target>
當我檢查通過執行這一目標創造了罐子,我看到它確實包含了我所有的.class文件以及mylib.jar。
當我試圖然而,運行jar,我得到以下錯誤:
Exception in thread "main" java.lang.NoClassDefFoundError: com/test/lib/MyLibraryClass
at com.mytest.MyMain.<init>(Unknown Source)
at com.mytest.MyMain.main(Unknown Source)
Caused by: java.lang.ClassNotFoundException: com.test.lib.MyLibraryClass
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
... 2 more
我需要做什麼改變嗎?我是否生成格式不正確或不完整的清單?
非常感謝!
@Walker在執行jar時可以使用java -cp jarfile jartoexecute它應該可以正常工作。 – gks
@Stranger - 但這並不能直接解決JAR問題中的JAR。 –
對不起:(誤解了 – gks