一、问题

以前安装过安装版的jdk后,配置过环境变量,然后现在更换jdk版本且修改环境变量并不能生效,如原本安装了1.8,现更换为1.7,且配置了环境变量,但是java -version仍显示1.8。

二、原因

当使用安装版本的JDK程序时(一般是1.7版本以上),在安装结束后安装程序会自动将java.exe、javaw.exe、javaws.exe三个可执行文件复制到C:\Windows\System32目录,这个目录在WINDOWS环境变量中的优先级高于JAVA_HOME设置的环境变量优先级,故此直接更改JAVA_HOME会无效。

另外,JDK1.8安装版本,还会在C:\ProgramData\Oracle\Java目录中生成一些配置文件,并同时将此目录写到环境变量中的Path中。

三、解决

删除C:\Windows\System32目录下的java.exe、javaw.exe、javaws.exe三个文件

删除环境变量Path中C:\ProgramData\Oracle\Java\javapath的配置

常用命令

java -version

where java --查看在 path系统环境变量中的java.exe,并列出 全部结果 。

我的是之前配的JDK1.8想要换成OpenJDK

用where java查询结果就是首先第一行找到的就是这个路径下的C:\ProgramData\Oracle\Java\javapath,因为优先于环境变量,所以改变环境变量还是不能生效,此时删除里面的exe文件,

再次运行java -version 就显示为openJDK.