首先,OpenJDK11 下载地址: http://jdk.java.net/java-se-ri/11

安装 OpenJDK11 参考文章: Windows10系统下openjdk-11环境(java)的安装配置

使用 jlink.exe 生成 jre11 的环境时遇到错误

Error: invalid argument: Files\Java\jdk-11\jre

这个问题是由于 Windows 路径中存在空格导致的。我们使用命令 jlink.exe --module-path jmods --add-modules java.desktop --output %JAVA_HOME%\jre 将生成的文件存放在 JAVA_HOME 环境变量对应的路径的 jre 子文件夹中。但是 Oracle JDK8 默认安装的 jdkjre 路径在 C:\Program Files\Java

以上 jlink.exe 生成 jre11 的命令需要通过管理员权限打开 cmd 窗口,cd 到路径 C:\Users\dk\Downloads\openjdk-11+28_windows-x64_bin\jdk-11\bin

执行

# 在路径两边加上英文/半角单引号即可
jlink.exe --module-path jmods --add-modules java.desktop --output "%JAVA_HOME%\jre"

ps:

  • 系统环境变量 Path 中的值 C:\ProgramData\Oracle\Java\javapath 可以删除
  • JDK8 的环境变量 JAVA_HOME_8 的值是 C:\Program Files\Java\jdk1.8.0_144
  • JRE8 的环境变量 JRE_HOME_8 的值是 C:\Program Files\Java\jre1.8.0_144
  • 由于后面主用 JDK11 开发,所以 JDK11 的环境变量 JAVA_HOME 的值是 C:\Program Files\Java\jdk11 下面 JRE_HOME 类同
  • JRE11 的环境变量 JRE_HOME 的值是 C:\Program Files\Java\jdk1\jre
  • CLASSPATH 不用改
  • C:\Program Files\Java\jre1.8.0_144C:\Program Files\Java\jdk1.8.0_144\jre 这两个 jre 的区别是:前者偏重于运行 Java 程序时使用,后者偏重于 Java 开发者在编译后运行 Java 程序使用,这也和环境变量配置的习惯有关。仅仅运行 Java 程序时(比如 java -jar xxx.jar)会优先读取 JRE_HOME

下面是 cmd 测试结果

C:\Users\dk>echo %JAVA_HOME%
C:\Program Files\Java\jdk-11

C:\Users\dk>echo %JRE_HOME%
C:\Program Files\Java\jdk-11\jre

C:\Users\dk>echo %JAVA_HOME_8%
C:\Program Files\Java\jdk1.8.0_144

C:\Users\dk>echo %JRE_HOME_8%
C:\Program Files\Java\jre1.8.0_144