Windows 10 安装 OpenJDK11 和 Oracle JDK8 共存以及“Error: invalid argument: Files\Java\jdk-11\jre” 问题解决
首先,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 默认安装的 jdk
、jre
路径在 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_144
和C:\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