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

标签 java java-9 java-platform-module-system jlink

JDK9 最酷的特性之一是 jlink这使得 JVM 的小型优化版本可以运行应用程序,这对于在容器(如 docker 容器)中运行应用程序非常有用。 但是,仅传递您拥有的 JAR 文件并获得优化的运行时来运行它并不是很简单。

就像我使用 Gradle 并创建一个 fat 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

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

关于java - 使用 jlink 为一个胖 Jar 文件优化 JVM 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52658535/

相关文章:

java - 谷歌应用引擎+StampBarcode+pdf417 Api

java - 如何在Eclipse中使用模块化项目的.classpath?

Java 9 模块和类路径 hell : conflicting class names

java - 仅当我使用 jlink 组装应用程序后运行应用程序时,Flyway 才无法在类路径中找到迁移

java - 类加载器 + 模块 = 测试难题

java - 如果在 preparedstatement.execute() 期间互联网中断,则在 JDBC 上下载 blob 文件会导致内存泄漏

java - 由于 jenkins 中的本地修改,Maven 发布插件中止准备

Java 9 错误 : not in a module on the module source path

maven - Maven 如何与 Java 9 模块一起工作?

Java:启动主应用程序之前的新框架