首页 > 解决方案 > 使用 jlink 为胖 Jar 文件优化 JVM 模块

问题描述

JDK9 最酷的特性之一是 jlink 它制作了一个小的 JVM 优化版本来运行应用程序,这非常有用,尤其是在 docker 等容器中运行应用程序时非常有用。但是,仅传递您拥有的 JAR 文件并获得优化的运行时来运行它并不是很简单。

就像我使用 Gradle 并创建了一个胖 jar 文件(所有依赖项都在一个 jar 文件中),而我只是想使用这个 jar 文件为其生成 JVM?有什么解决办法吗?

标签: javajava-9java-platform-module-systemjlink

解决方案


使用 JDeps 分析项目的依赖关系

jdeps --list-deps app.jar

然后从该列表中提取所有平台模块(以java.jdk.开头的模块)并将它们输入jlink

jlink --add-modules $REQUIRED-PLATFORM-MODULES --output jdk-for-app

核实:

jdk-for-app/bin/java --list-modules

这包括您确定的所有平台模块及其依赖项。


推荐阅读