我有一个使用 java8 和 maven 的 java 应用程序,现在我想使用 jdk9 生成一个更小的 jre 来打包我的应用程序,怎么做?如果不可能,你能给我一个maven用jlink生成小的jre演示吗?我的英语不太好,对不起,谢谢。
问问题
747 次
1 回答
3
jdeps -summary -recursive --class-path $libs $jar
用您的应用程序 JAR替换$libs
所有依赖项(甚至是传递的依赖项;Maven 可以复制它们)和 $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
于 2018-05-17T13:51:20.130 回答