关于JDK环境配置的误区和单机安装多版本JDK并灵活切换版本

关于JDK环境配置的误区,单机安装多版本JDK

操作系统:windows10

JDK版本:JDK7,JDK8,JDK9

场景:单机安装多个版本JDK。

如果只想知道如何灵活切换JDK版本,可直接看5.总结。

 

1.关于JDK环境配置

Java开发者都知道安装JDK后要配置环境变量,通常我们都认为配置了JAVA_HOME和PATH、CLASSPATH后就万事大吉了。这在较低版本JDK(应该是7以下)、或者是单机只安装一个JDK的时候是没问题的。但是,当在单台机器上安装多个版本的JDK时就会有问题了。

2.场景实现

由于版本发布顺序,以及在项目中使用和学习的顺序,JDK安装顺序如下:

JDK7->JDK8->JDK9

安装JDK8的时候修改环境变量到JDK8的安装目录,当时并没有留意到有什么不妥,由于开发时的IDE是可以配置JDK路径的,所以也没有影响。但是当我安装JDK9后问题就来了,此时环境变量仍然配置的JDK8的。执行java –version,如下图,显示版本是9.


    但是JDK9是用于学习的,现在还不可能用来开发实际项目。

3.解决问题

    从网上找到的单机多版本JDK资料不多,只找到一篇比较合适的(由于当时没总结,原网址忘了),说C:\Windows\System32目录下有3个文件:java.exe,javaw.exe,javaws.exe。这三个文件时JDK安装时从 安装目录/bin路径下复制过来的。

    我当时就从 JDK8安装目录/bin下复制替换了者3个文件(当然替换前备份一下)。然而并没有用。


  当我再一次检查环境变量是否有误时发现了问题所在,如图:


JDK安装后竟然创建了一个目录并设置了环境变量!该路径下有3个熟悉的文件:java.exe,javaw.exe,javaws.exe。我不知道这是哪个版本的JDK会做的事,但是看路径应该是sun被Oracle收购后才有的神操作。

将JDK8安装目录/bin下的java.exe,javaw.exe,javaws.exe复制到C:\ProgramData\Oracle\Java\javapath,达到了预期的目的,如下图


4.简单的思考一下

根据path的配置顺序,java运行时的环境顺序应该是:
    1)C:\ProgramData\Oracle\Java\javapath

    2)C:\Windows\System32

    3)%JAVA_HOME%\bin

    4)%JAVA_HOME%\jre\bin

系统依顺序从上面几个路径中寻找java.exe,javaw.exe,javaws.exe这几个文件执行。

验证:

JAVA_HOME配置JDK8,C:\Windows\System32中放的是JDK7的文件



得出另一个结论:运行环境C:\Windows\System32和C:\ProgramData\Oracle\Java\javapath中文件来源的JDK版本要大于或者等于JAVA_HOME中的JDK版本。

此时C:\ProgramData\Oracle\Java\javapath路径下放1.9的文件


5.总结

 

单机安装多个版本JDK时,如果想灵活切换JDK版本,按如下步骤切换:

1) 前提是各版本JDK正确安装成功,会正常配置环境变量,将环境变量配置为想用的JDK版本安装目录。

百度上太多了。

2) 配置完成后检查一下path是否存在如下(或类似)配置路径,如果没有就跳过

如果有,则从对应的版本(即想要配置的版本)安装目录/bin下复制java.exe,javaw.exe,javaws.exe这三个文件到该路径替换里面的文件。

3) 检查C:\Windows\System32下有没有java.exe,javaw.exe,javaws.exe这三个文件,如果有,则从对应的版本(即想要配置的版本)安装目录/bin下复制过来替换这三个文件。


4) 运行环境C:\Windows\System32和C:\ProgramData\Oracle\Java\javapath中文件来源的JDK版本要大于或者等于JAVA_HOME中的JDK版本。否则会报类似如下的运行环境错误:


6.思考

下面几个问题我认为是可以的,但是还没验证,请小白鼠们自行验证:
1)是否可以直接删除path中的C:\ProgramData\Oracle\Java\javapath配置以及其文件,删除C:\Windows\System32中的java.exe,javaw.exe,javaws.exe,只保留手动设置的path配置?

我认为是可以的,但是注意C:\Windows\System32是系统目录,只能删除java.exe,javaw.exe,javaws.exe这几个文件,否则会有未知的问题。(未验证)

2)是否可以只保留C:\ProgramData\Oracle\Java\javapath而不用配置传统的JAVA_HOME和PATH、CLASSPATH?

应该是可以的,sun自动配置这个路径应该是为了减少手动配置环境的麻烦。(未验证)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值