"Essential" (Jigsawed) Java 9 没有模块化代码的 JRE
"Essential" (Jigsawed) Java 9 JRE without modularized code
我们有一个 Java 应用程序,它不使用 AWT/Swing/JavaFX 并且可以与私有捆绑的 JRE 8 一起正常工作。JRE 9 比 JRE 8 大得多,但我们想让用户尝试我们的使用 JRE 9 的应用程序。我们还不想模块化我们的代码或 jars(以保持与 Java 8 的兼容性)。
如何创建可以与该 Java 应用程序捆绑在一起的 "essential"(= 精简到最少的必需部分)私有 JRE 9?
可以创建 JRE 的自定义运行时映像,而无需将应用程序本身转换为 Java 9 个模块。首先,我们需要找出需要哪些模块(JDK/JRE):
"C:\Program Files\Java\jdk-9.0.1\bin\jdeps.exe"
-s
"C:\path\to\my\jars\*.jar"
然后我们可以创建一个轻量级的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"
我们有一个 Java 应用程序,它不使用 AWT/Swing/JavaFX 并且可以与私有捆绑的 JRE 8 一起正常工作。JRE 9 比 JRE 8 大得多,但我们想让用户尝试我们的使用 JRE 9 的应用程序。我们还不想模块化我们的代码或 jars(以保持与 Java 8 的兼容性)。
如何创建可以与该 Java 应用程序捆绑在一起的 "essential"(= 精简到最少的必需部分)私有 JRE 9?
可以创建 JRE 的自定义运行时映像,而无需将应用程序本身转换为 Java 9 个模块。首先,我们需要找出需要哪些模块(JDK/JRE):
"C:\Program Files\Java\jdk-9.0.1\bin\jdeps.exe"
-s
"C:\path\to\my\jars\*.jar"
然后我们可以创建一个轻量级的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"