簡體   English   中英

Java 9:使用第三方jar生成JLink的運行時映像

[英]Java 9: Generating a runtime image with JLink using 3rd party jars

我想創建一個包含第三方jar的Java 9運行時映像。 我做了一個簡單的Java項目(讓我們調用這個Example )來調用一個實用程序jar(讓我們調用這個ExampleUtil.jar )。 Example包含src目錄中的module-info.java ,並在Eclipse中運行正常(我已將ExampleUtil.jar添加為模塊依賴項)。 如果我打電話:

jlink -v
    --module-path "C:\Program Files\Java\jdk-9.0.4\jmods";C:\Temp
    --add-modules com.example.steven
    --output C:\Temp\image.steven
    --launcher launch=com.example.steven/com.example.steven`

...我收到錯誤消息:

錯誤:找不到ExampleUtil模塊的module-info.class

有沒有辦法使用非模塊的jar創建運行時映像? 謝謝。

不,jlink要求所有包含的模塊都是顯式的 ,這意味着它們需要具有模塊描述符。 以下是文檔中有關jlink模塊路徑的內容:

jlink工具發現可觀察模塊的路徑。 這些模塊可以是模塊化JAR文件,JMOD文件或分解模塊。

注意缺少“普通JAR”(即沒有描述符的JAR)。

您可以將現有的第三方JAR升級為模塊化JAR(需要付出一些努力)。 步驟是:

或者,您可以使用像ModiTect這樣的工具為您完成這些工作。

jlink直接做不到這一點。 訣竅是在所有外部庫上調用jdeps來收集它們的系統模塊依賴關系,然后相應地修改參數以進行jlink。 生成module-info.java並不總能解決問題,但您可以使用jdeps查看所需的系統模塊,而不是使用包含所有這些系統依賴關系的jlink創建自定義Java運行時,並將外部庫放在類路徑上或模塊路徑取決於它們是非模塊化罐子還是自動模塊罐子。

您可以使用類似特殊maven插件的內容來自動執行該任務。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM