使用 jlink 为一个胖 Jar 文件优化 JVM 模块

Optimize JVM modules using jlink for a fat Jar file

JDK9 最酷的功能之一是 jlink,它使 JVM 的小型优化版本成为 运行 应用程序,这对 运行 应用程序非常有用像 docker 那样的容器。 但是,仅传递您拥有的 JAR 文件并获得优化的 运行 时间到 运行 它并不是很简单。

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

Use JDeps to analyze your project's dependencies:

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

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