簡體   English   中英

我有一個舊版本的jar,現在我想使用jlink生成一個較小的jre,該怎么做?

[英]I have a old version jar,now I want to use jlink to generate a smaller jre,how to do it?

我有一個使用java8和maven的Java應用程序,現在我想使用jdk9生成一個較小的jre來與我的應用程序打包,該怎么做? 如果不可能,您能給我一個用jlink生成小jre演示的maven嗎?我的英語不太好,很抱歉,謝謝。

您可以使用JDeps分析對模塊的依賴性

jdeps -summary -recursive --class-path $libs $jar

$libs替換$libs您所有的依賴項(即使是 $libs的依賴項, Maven可以將其復制 ),並將$ jar替換為您的應用程序JAR。 然后,輸出包含模塊依賴項列表(查找... -> java.*... -> jdk.* )。

如果您使用的是Linux,則可以使用以下管道獲取模塊名稱的排序列表:

jdeps -summary -recursive --class-path 'jars/*' jars/app.jar
    | grep '\-> java.\|\-> jdk.'
    | sed 's/^.*-> //'
    | sort -u

如果您使用的是Java 10或更高版本,則可以使用--print-module-deps而不是-summary

獲取該列表並將其輸入到jlink

jlink
    --module-path $jdk/jmods
    --add-modules $modules
    --output minimal-jre

如果您還想綁定所有平台服務,請輸入--bind-services

然后,以下行將列出您確定的所有模塊及其依賴關系,以及可能綁定的服務:

minimal-jre/bin/java --list-modules

暫無
暫無

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

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