java1.6升级1.7_jdk从1.6升级到1.7可能会遇到的Version问题

背景:

前段时间重装电脑,给系统安装了jdk1.6,之后因为换工作新单位用的jdk1.7,就升级了一下jdk(又安装了JDK1.7),重新配置了JAVA_HOME变量,这没有任何问题,之后因为一些原因,又需要切换回JDK1.6(又将JA VA_HOME改为了jdk1.6的安装目录),那么问题来了,执行java -version显示的版本始终是1.7的版本,但是echo %JAVA_HOME%却没错就是JDK1.6的安装目录

定位问题:

于是上网查找问题原因,有的说是jdk1.7及以后会修改注册表,也就是说安装了jdk1.7之后不再是去查找JAVA_HOME环境变量配置的jdk安装路径而是直接走注册表,按照这种说法找到对应的注册表配置如下:

(路径:HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/Java Development Kit HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/Java Plug-in HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/Java Runtime Environment)

57797

f0ca5c0b8b2a777303e7d24746556329.png

由上面的截图我们可以看到,1.6和1.7都添加了对应的注册表,所以因为注册表的原因导致用命令java -version命令的时候显示的还是jdk1.7的信息并不成立,那么根本原因又是什么呢?

这个时候我们打开命令行执行where java,在命令行打印出了如下的两行信息:

6ea51c327787fd1dbc25a7e6b9d7a14f.png

很明显下面的java.exe正是我们需要的jdk下面的java,那么第一个也就是System32下面的java.exe是什么时候生成的呢?

57797

1e0c648345367e9a7af11e26b11e4144.png

从修改日期上看到,这与java相关的三个文件是在2015.10.20 13:10左右生成的,我又回过头去安jdk1.7的安装时间,如下:

57797 

e0427c845ae651a6c58835c61ff72ad2.png

从时间上看应该是安装jdk1.7的时候复制过去的,但是需要验证下,怎么验证呢 ?有个简单的办法就是看文件大小,system32下java javaw javaws三个文件大小分别为171 171 257kb,这和jdk1.7下面的是吻合的,但这不足以说明这三个文件是jdk1.7下面的,那我们接着去jdk1.6下看这三个文件的大小,分别是132 132和136kb,这足以说明system32下的这三个文件是在安装jdk1.7的过程中复制过去的,这里刚好jdk1.6和jdk1.7下的这三个文件大小不一样比较好区分,如果万一大小一样的话还可以反编译一下这三个可执行文件(看文件后缀是.exe,实质是根绝jar包打的可执行文件)然后根据里面的内容来区分。

到目前为止我们只能说明system32下的java文件是安装jdk1.7的过程中复制过去的还是不能解释为什么在执行java -version的时候出来的会是jdk1.7 ,这个时候我们回去看Path环境变量如下(为了便于查看已经按”;”分行):

C:\Program Files\AMD APP\bin\x86;

%SystemRoot%\system32;

%SystemRoot%;

%SystemRoot%\System32\Wbem;

%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;

C:\Program Files\ATI Technologies\ATI.ACE\Core-Static;

%JAVA_HOME%\bin;

%M2_HOME%\bin;

%CATALINA_HOME%\lib;

%CATALINA_HOME%\bin

可以看到环境变量里%SystemRoot%\system32;在%JAVA_HOME%\bin;的前面,这也是为什么执行where java的时候出来的先是system32下的java,那么到现在其实原因已经很明显了,我们需要做的就是给Path环境变量里的%JAVA_HOME%\bin;移动到%SystemRoot%\system32的前面,这样就首先找到的是JAVA_HOME配置的JDK了,这样问你就得到解决了。

后记:以前遇到问题没有记录的习惯,也不会去刨根问题找问题的根本原因,这其实对于一个技术人来说的话很影响发展,以后我会去认真记录工作中遇到的一些问题,尽可能的做详尽的分析,有问题的地方求指正,免得误导大家。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值