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

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

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

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

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

当装完新的JDK后,它会给你在PATH自动配置一个环境变量,如图:

当找到C:\ProgramData\Oracle\Java\javapath所指的目录时发现如下三个文件:

当在cmd下运行这个java.exe时发现:

总结: 这才明白,当装完JDK9时,JDK自己给你配好了环境变量,而且它在PATH环境变量里面属于第一个,因为覆盖了后面自己配的环境,所以才在命令行显示的jdk9。

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

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

然后在它对应的目录下找到了

同样在cmd命令行下测试该java.exe的版本

总结

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

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

  1. 史上最详细Windows版本搭建安装React Native环境配置 转载,比官网的靠谱亲测可用

    史上最详细Windows版本搭建安装React Native环境配置   2016/01/29 |  React Native技术文章 |  Sky丶清|  95条评论 |  33530 views ...

  2. 【转】Win7环境下VS2010配置Cocos2d-x-2.1.4最新版本的开发环境(亲测)

    http://blog.csdn.net/ccf19881030/article/details/9204801 很久以前使用博客园博主子龙山人的一篇博文<Cocos2d-x win7+vs20 ...

  3. Win7环境下VS2010配置Cocos2d-x-2.1.4最新版本的开发环境(亲测)

      写这篇博客时2D游戏引擎Cocos2d-x的最新版本为2.1.4,记得很久以前使用博客园博主子龙山人的一篇博文<Cocos2d-x win7+vs2010配置图文详解(亲测)>成功配置 ...

  4. Netbeans7.0完美中文+Consolas字体显示配置(亲测可用)

    最近把开发环境从Eclipse迁移到了Netbeans上面.因为Netbeans已经相当优秀,速度快功能也不必Eclipse差,但是一只有 一个问题一直让我对eclipse非常纠结:如果把字体选择为C ...

  5. Win7(32/64)VS2010配置编译GDAL环境(图文教程+亲测可用!)

    最近的一个VS2010的项目中用到了GDAL,关于GDAL这个库的说明与赞美,这里就不赘述了,下面是在VS2010中配置GDAL的详细过程. 系统说明 Win7(32位/64位),VS2010,GDA ...

  6. MAC下Xcode配置opencv(2017.3.29最新实践,亲测可行)

    本文原创,未经同意,谢绝转载!(转载请告知本人并且经过本人同意--By Pacific-hong) 本人小硕一枚,因为专业方向图像相关,所以用到opencv,然后网上MAC下Xcode配置opencv ...

  7. 【亲测可用,亦可配置同一平台的不同账号,例如阿里云的两个不同账号】Windows下Git多账号配置,同一电脑多个ssh-key的管理

    Windows下Git多账号配置,同一电脑多个ssh-key的管理   这一篇文章是对上一篇文章<Git-TortoiseGit完整配置流程>的拓展,所以需要对上一篇文章有所了解,当然直接 ...

  8. MAC下Xcode配置opencv(2017.3.29最新实践,亲测可行)(转)

    本文原创,未经同意,谢绝转载!(转载请告知本人并且经过本人同意--By Pacific-hong) 本人小硕一枚,因为专业方向图像相关,所以用到opencv,然后网上MAC下Xcode配置opencv ...

  9. spring boot 日志文件配置(logback-spring.xml)亲测可用!

    问题描述:如何配置springboot项目,通过日志配置,使之输出自定义日志. 详细文章:https://blog.csdn.net/gebitan505/article/details/701421 ...

随机推荐

  1. mount -o remount,rw /命令什么意思

    1.关于如何改变linux中,对只有Read-only filesystem的文件,如何改为为可写.可读权限? I.可以执行 mount -o remount,rw /II.执行完毕后,会出现以下字样 ...

  2. POJ 3183:Stump Removal(模拟)

    http://poj.org/problem?id=3183 题意:有n个树桩,分别有一个高度h[i],要用Bomb把树桩都炸掉,如果炸的位置的两边树桩高度小于Bomb炸的树桩高度,那么小于树桩高度的 ...

  3. Java第二次作业——数组和String类

    Java第二次作业--数组和String类 学习总结 1.学习使用Eclipse关联jdk源代码,查看String类的equals()方法,截图,并学习其实现方法.举例说明equals方法和==的区别 ...

  4. [MySQL]快速解决"Table '.\sjzlf\zbp_post' is marked as crashed and should be repaired"故障

    为了不冒失修复,故采取保守做法,我们知道 MySQL 一个高效的管理工具便是 PhpMyAdmin,而在该管理软件中就包含了对表的检查.分析.修复.优化功能,比起网上提供的含糊命令行来说更安全更简便. ...

  5. Linux日志系统分析:rsyslog、syslog和klog

    参考博客: https://blog.csdn.net/lidonghat/article/details/55004280 https://blog.csdn.net/u012247418/arti ...

  6. 【栈-例题】网页跳转-C++

    描述 蒜头君每天都在用一款名为 "蒜厂浏览器" 的软件.在这个浏览器中,一共三种操作:打开页面.回退和前进.它们的功能如下: 打开页面:在地址栏中输入网址,并跳转到网址对应的页面: ...

  7. pip install xxxx报错(一大堆红色exception)【解决】

    安装个distribute或nose或lpthw.web或virtualenv 都可能出现下面问题   root@kali:~# pip install distribute Collecting d ...

  8. c++中利用宏定义简化for循环使用

    话不多说,上方法 #define _for(i,a,b) for( int i=(a); i<(b); ++i) #define _rep(i,a,b) for( int i=(a); i< ...

  9. iconfontのsymbol的使用

    iconfontのsymbol的使用 iconfont三种方式的优缺点 unicode 优点: 1.兼容性最好,支持ie6+ 2.支持按字体的方式去动态调整图标大小,颜色等等 缺点: 1.不支持多色图 ...

  10. 个人永久性免费-Excel催化剂功能第81波-指定单元格区域内容及公式填充

    在日常数据处理过程中,需要对缺失数据进行填充时,按一定逻辑规则进行处理,实现快速填充,规范数据源.此篇给大家带来多种填充数据的场景. 业务使用场景 对各种系统中导出的数据,很多时候存在数据缺失的情况, ...