本文介紹了JPMS和FATUBER可執行JAR–它是如何協同工作的?的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
我想知道當使用JDK>8(即實際上使用JPMS)以及可執行JAR時,FATUBER JAR是如何工作的。
我有兩個與此主題相關的問題:
1.FATUBER JAR創建組裝流程
每個Java模塊通常是一個JAR,它在根條目中保存module-info.class
。
我正在使用Maven,我正在使用Maven匯編插件來構建FATUBER JAR(帶有依賴關系的JAR引用描述符)。
如果我的應用程序依賴于許多模塊化JAR,那么所有這些JAR將如何共存?畢竟,每個JAR的module-info.class
都將覆蓋另一個JAR的module-info.class
文件,因為所有的module-info.class
都應該在根條目中…?
(側標:我已經用我創建的maven sample project對它進行了測試,并發現最終的FAT JAR只保存第一個遇到的依賴項的module-info.class
。使用-X
選項還發現,由于第一個文件的存在,所有其他module-info.class
文件都被跳過…)
2.可執行JAR
眾所周知,可執行JAR可以通過java -jar <jar-file-name.jar>
運行。當以這種形式使用JDK 11時-我的(FAT)JAR及其所有依賴項是否會從類路徑運行,并由此被視為未知模塊的一部分?還是從模塊路徑?
推薦答案
您可以從FAT JAR中刪除MODULES-INFO.CLASS,以去除模塊化元數據。這是一個簡單的解決方案,現在您的FAT JAR將是可執行的。
zip -d FatJar.jar module-info.class
這篇關于JPMS和FATUBER可執行JAR–它是如何協同工作的?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,