【发布时间】:2017-09-20 20:33:01
【问题描述】:
假设我正在开发一个由 2 个模块组成的模块化应用程序:com.spacey.explorer,它依赖于 com.spacey.rocket 模块。我在一些bin 目录中有他们的模块化JAR 文件。
我想准备轻量级 JRE 来运行它。很明显,我使用 jlink 工具:
$ jlink --module-path /opt/jdk-9/jmods:../bin --add-modules com.spacey.explorer --output ~/custom-jre3
现在,当我在 JRE 中列出模块时,我得到以下信息:
$ java --list-modules
com.spacey.explorer
com.spacey.rocket
java.base@9
也就是说,我的应用程序模块被捆绑到 JRE 中。但是,如果我想构建一个 JRE,它只包含足以运行我的应用程序的 JDK 起源模块并且将我的应用程序模块分开,我必须知道我的 JDK 是什么依赖项是(在示例中这只是java.base)并明确指定它们:
$ jlink --module-path /opt/jdk-9/jmods --add-modules java.base --output ~/custom-jre3
有什么方法可以让 jlink 为我做这件事吗?或者有什么工具可以帮我找出那些源自 JDK 的依赖项?
【问题讨论】:
标签: java java-9 jlink java-module jdeps