无需模块化代码的“基本”(拼图)Java 9 JRE

Tho*_* S. 4 java java-platform-module-system

我们有一个不使用AWT / Swing / JavaFX的Java应用程序,并且可以与私有捆绑的JRE 8一起正常工作。JRE9远远大于JRE 8,但是我们想让用户使用JRE 9来尝试我们的应用程序。但仍想对我们的代码或jar进行模块化(以保持与Java 8的兼容性)。

如何创建可以与该Java应用程序捆绑在一起的“必需的”(精简到最少的必需部分)私有JRE 9?

Tho*_* S. 5

可以创建JRE的自定义运行时映像,而无需将应用程序本身转换为Java 9模块。首先,我们需要找出需要哪些模块(JDK / JRE的):

"C:\Program Files\Java\jdk-9.0.1\bin\jdeps.exe"
                 -s
                 "C:\path\to\my\jars\*.jar"
Run Code Online (Sandbox Code Playgroud)

然后,我们可以创建一个轻量级的jre目录结构(用您的应用程序所需的模块替换java.logging,java.xml):

"C:\Program Files\Java\jdk-9.0.1\bin\jlink.exe"
                 --module-path "C:\Program Files\Java\jdk-9.0.1\jmods"
                 --add-modules java.logging,java.xml
                 --output "e:\myproject\jre"
Run Code Online (Sandbox Code Playgroud)