关于安装多个版本jdk之后java -version不正确的问题

时间:2021-09-22 15:17:59

问题描述:

今天突然想写一个socket通信的小应用,分别采用BIO、NIO、AIO的方式来实现,来复习前面看的关于TCP/UDP通信的知识。于是乎在原来安装了jdk1.6的机子上重新安装了jdk1.8。结果就出现了一个很蛋疼的问题:我原来的JAVA_HOME配置根本就没有改变,但是在命令行执行 java -version出现的却是1.8版本,而javac -version出现的是正常的1.6版本。

 

原因分析:

参考 http://www.oschina.net/question/942785_103000?fromerr=U6XKsOdO , 主要原因是javac -version是由JAVA_HOME指定的路径中的java版本来决定的。而java -version中找的java.exe是根据系统环境变量PATH来定的,而此前我系统中的PATH变量配置为:JAVA_HOME相关的配置在最后,也就是在system32的后面。这样因为每次安装jre的时候,都会讲java.exe拷贝到system32路径中,而java -version会依次变量PATH配置,如果找到了就不在继续往后找,这就导致java -version永远是最新版本的java。

 

解决办法:

其实只要将系统环境变量PATH中的JAVA_HOME相关的配置移到最前即可。 其他的可以删除system32中的java.exe javaw.exe javaws.exe,删除注册表等。