zoukankan      html  css  js  c++  java
  • 配置多个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:ProgramDataOracleJavajavapath所指的目录时发现如下三个文件:
    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:WindowsSystem32移动到JAVA_HOME之后(或者删除该目录下java.exe),因为C:WindowsSystem32包含大量的系统文件,不能把该目录直接删除。然后每次更改JAVA_HOME的值都能达到我们预期的效果。

  • 相关阅读:
    Core Animation笔记(变换)
    Core Animation笔记(- Layer 基本属性)
    使用AndroidStudio编写APICloud模块需要注意的地方,解决模块未定义。
    MAC中使用APICloud同步代码错误解决办法
    【深入理解Java虚拟机 】类加载器的命名空间以及类的卸载
    【深入理解Java虚拟机 】类的加载器
    【深入理解Java虚拟机】类的初始化过程
    Netty中ByteBuf的引用计数线程安全的实现原理
    Java使用PipedStream管道流通信
    Java中的守护线程
  • 原文地址:https://www.cnblogs.com/minghaiJ/p/11297272.html
Copyright © 2011-2022 走看看