我有一個外部庫(只有一個類文件,名爲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
我試圖以兩種方式
java -classpath C:/Users/vinay/Desktop -jar a.jar
與 MANIFEST.MF條目是清單運行jar -版: 1.0
創建-者:1.6.0_05(太陽 微系統公司)
主類:com.os.hw.HelloWorld,並得到了NoClassDefFoundError的DependedClass
java -jar a.jar
後如下更改清單條目Manifest-Version:1.0
創建者:1.6.0_05(太陽 微系統公司)
主類:com.os.hw.HelloWorld
類路徑:C:/用戶/維奈/桌面但這次扔的NoClassDefFoundError爲的HelloWorld 類本身
當我打包我的外部lib放到罐子和使用清單文件類路徑條目罐子命名works.Is有沒有辦法解決這個問題,而包裝外部lib放到罐子?
Yeah.It works.Thanks。但我們不能期望用戶知道什麼是主要的類是正確的嗎?有沒有辦法解決的依賴jar的外部類文件不存檔? –
是的,您可以通過自定義類加載器加載更多類,例如通過創建一個相對於當前文件夾將文件加載到文件夾中的URLClassLoader。一個更好的方法可能是通過windows的批處理腳本和* nix的shell腳本運行應用程序,該腳本設置類路徑並正確調用main方法。 –