配置多个JDK存在的问题与解决方案 (亲测可用)

安装多个JDK时的技巧 (亲测可用)

我的电脑本来是JDK8的,后来的想在不同的JDK版本下测试JDK的垃圾回收器。

一开始的的思路是,先安装JDK,为每个JDK配置自己的家目录,然后在想用哪个版本的时候,将JAVA_HOME指向对应JDK的家目录即可(这里PATH跟CLASSPATH不用变,只变JAVA_HOME 即可在不同JDK间切换),直接上图 (有时候图片来的更直观):
Snipaste_2019-08-04_09-03-48.jpg

先装的JDK9 (问题发现与解决)

但当时,装完JDK9,改了JAVA_HOME后,cmd命令行下java -version,显示java9,但当时切换不到JDK8,当时一脸懵逼,最后找到原因:

当装完新的JDK后,它会给你在PATH自动配置一个环境变量,如图:
Snipaste_2019-08-04_09-12-21.jpg

当找到C:\ProgramData\Oracle\Java\javapath所指的目录时发现如下三个文件:
Snipaste_2019-08-04_09-14-39.jpg

当在cmd下运行这个java.exe时发现:
Snipaste_2019-08-04_09-16-39.jpg
总结: 这才明白,当装完JDK9时,JDK自己给你配好了环境变量,而且它在PATH环境变量里面属于第一个,因为覆盖了后面自己配的环境,所以才在命令行显示的jdk9。

后装的JDK7 (问题发现与解决)

安装完JDK7之后,又出现异常,不论怎么改自己配置的环境变量,命令行下由java -version一直显示jdk8了(玄学。。。。),根绝排查上一个错的经验,猜想肯定是PATH 下JAVA_HOME前面的某个环境变量在做鬼,因此把JAVA_HOME移动到最顶端时,一切又回到了我们的预期。然后通过将JAVA_HOME放在PATH下不同的位置终于找出了做鬼的环境变量,
Snipaste_2019-08-04_09-30-28.jpg

然后在它对应的目录下找到了
Snipaste_2019-08-04_09-32-55.jpg
同样在cmd命令行下测试该java.exe的版本
Snipaste_2019-08-04_09-35-20.jpg

总结

现在终于明白之前各种情况的原因了,当装完JDK9后把jdk9自己配好的环境变量删掉,然后把C:\Windows\System32移动到JAVA_HOME之后(或者删除该目录下java.exe),因为C:\Windows\System32包含大量的系统文件,不能把该目录直接删除。然后每次更改JAVA_HOME的值都能达到我们预期的效果。

猜你喜欢

转载自www.cnblogs.com/minghaiJ/p/11297272.html
今日推荐