刚开始电脑上只安装了jdk1.7,后来又安装了1.8。于是在电脑上修改了系统变量,安装1.8之前的系统变量JAVA_HOME为:
JAVA_HOME=D:\Program Files\Java\jdk1.7.0_80
安装1.8之后修改了JAVA_HOME,并添加了两个新变量JAVA7_HOME和JAVA8_HOME,如下:
JAVA_HOME=%JAVA7_HOME%
JAVA7_HOME=D:\Program Files\Java\jdk1.7.0_80
JAVA8_HOME=C:\Program Files\Java\jdk1.8.0_201
本来以为切换jdk版本只需修改JAVA_HOME所对应的值就行了,但事实并非如此。无论你修改为1.7还是1.8,命令行窗口中查看jdk版本是都是1.8.这是为何呢?原来在jdk1.8安装的时候,会自动在系统变量Path的最前面加上
C:\Program Files (x86)\Common Files\Oracle\Java\javapath;
而这个路径里面放着java.exe、javaw.exe和javaws.exe三个程序。由于这个路径是放在系统变量Path的最前面,所以无论我们如何切换执行的都是这个路径里面的程序,应该将这个路径删除掉。然后就可以自由切换了。
注意:删除之后有可能出现“has value '1.8',but'1.7' is required”的错误,如下图:

这是因为C:\Windows\System32路径中的java.exe、javaw.exe和javaws.exe三个程序的版本和注册表中的版本不一致的原因。要解决这个问题有两种方法:
1. 在注册表下找到HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft文件夹下的Java Development Kit和Java Runtime Environment,点击这两个文件夹,右侧会有CurrentVersion,右键点击CurrentVersion可修改版本为1.7或1.8,这个版本必须和上述目录中的三个程序的版本一致,否则就会出现上述问题。

2.还有一种方法是直接把C:\Windows\System32路径中的这三个程序直接删除,这样就不用修改注册表了,我就是这么干的,暂时没发现啥问题。
本文介绍了在Windows上同时安装和切换使用JDK1.7和JDK1.8的过程。通过设置JAVA7_HOME和JAVA8_HOME环境变量,以及调整Path路径来实现版本切换。遇到的问题是由于JDK1.8在Path中的优先级导致始终运行1.8版本,解决方案是删除特定路径或修改注册表中相关版本信息。

被折叠的 条评论
为什么被折叠?



