Windows 多版本JDK安装与环境变量配置
一、问题描述及现象
在Windows系统中安装多个JDK版本后,配置JAVA_HOME至指定版本后,执行java -version后仍显示原配置JDK版本或者最高版本JDK
1.1 安装不同JDK版本
本次测试共安装四个不同JDK版本,JDK1.6,1.8,11,16。

1.2 环境变量
未配置为JDK1.8

已配置环境变量

1.3 执行java -version
# 执行版本查询
java -vesion
# 查询结果均为最高版本JDK
PS C:\Users\Administrator> java -version
java version "16.0.1" 2021-04-20
Java(TM) SE Runtime Environment (build 16.0.1+9-24)
Java HotSpot(TM) 64-Bit Server VM (build 16.0.1+9-24, mixed mode, sharing)
PS C:\Users\Administrator>
无论是否配置环境变量都会失效,且环境变量默认为JDK最高版本

二、问题原因分析
2.1 有其他环境变量配置
当使用安装版本的JDK程序时(一般是1.7版本以上),在安装结束后安装程序会自动将java.exe、javaw.exe、javaws.exe三个可执行文件复制到C:\Windows\System32目录。
2.2手动配置环境变量优先级较低
C:\Windows\System32目录目录在WINDOWS环境变量中的优先级高于JAVA_HOME设置的环境变量优先级,故此直接更改JAVA_HOME会无效。
另外,JDK1.8安装版本,还会在C:\ProgramData\Oracle\Java目录中生成一些配置文件,并同时将此目录写到环境变量中的Path中。

三、如何解决
3.1 直接删除文件
删除C:\Windows\System32目录下的java.exe、javaw.exe、javaws.exe三个文件
删除环境变量Path中C:\ProgramData\Oracle\Java\javapath的配置
3.2 提升环境变量优先级
手动配置JAVA_HOME,并把path里%JAVA_HOME%\bin放在path变量的最前面


手动配置JDK1.8环境变量成功!

3.3 快速切换环境变量到指定JDK版本
实际Windows本机测试时,由于项目不同,打包本机测试时,运行需要指定版本JDK环境。
3.3.1配置多个JAVA_HOME
只需更改
JAVA_HOME的地址,无需修改Path配置。

3.3.2 切换效果
注意:环境变量切换完成后,要重启DOS窗口,DOS窗口打开时会重新加载环境变量。
-
JDK 1.8


-
JDK 11.0


-
JDK 16.0


-
JDK 1.6


以上,请参考,谢谢!
更多推荐
所有评论(0)