我想設置一個罐子清單,因此它加載了一個文件夾旁邊的所有庫(罐子)。是否有可能有一個罐子清單使用文件夾中的所有罐子
清單如下所示:
Manifest-Version: 1.0
Class-Path: libs/
Main-Class: path.to.my.class.Main
佈局如下:
- MyJar.jar
- libs/
-----lib1.jar
-----lib2.jar
而且我試圖像這樣運行:
java -jar MyJar.jar
我也得到NoClassDefinition有關文件夾內jar中的類的錯誤。
如果有人很好奇,該文件夾可能包含在類加載期間處理的可選jar。這是'我不能使用硬編碼或自動生成的。
有什麼想法?
更新 改寫了這個問題,因爲這是目前不可能從清單本身。答案是唯一真正可行的,不需要提取罐子,雖然它也可以。
因此,作爲總結,答案是否定的,如果您有未指定的依賴關係,則無法單獨從清單文件完成。
AFIK JAR的類路徑開始於'JAR'文件的根目錄。除非要像Spring Boot或OSGI容器那樣動態加載它們,否則不能將子類或JAR放在子目錄中。 – 11thdimension
原來,可以這樣做,你必須用JAR名稱指定路徑。檢查此鏈接http://todayguesswhat.blogspot.com/2011/03/jar-manifestmf-class-path-referencing.html?_sm_au_=ivVTSRf571T1SvZP – 11thdimension
我早先遇到該鏈接,我的清單是基於此,但它doesn沒有工作。它只能找到該文件夾中在類路徑中定義的文件。單獨的文件夾似乎不起作用。 (即libs /或./libs/) – javydreamercsw