jdk从1.6升级到1.7可能会遇到的Version问题 - CSDN博客
jdk从1.6升级到1.7可能会遇到的Version问题
前段时间重装电脑,给系统***了jdk1.6,之后因为换工作新单位用的jdk1.7,就升级了一下jdk(又***了JDK1.7),重新配置了J***A_HOME变量,这没有任何问题,之后因为一些原因,又需要切换回JDK1.6(又将JA VA_HOME改为了jdk1.6的***目录),那么问题来了,执行java -version显示的版本始终是1.7的版本,但是echo %J***A_HOME%却没错就是JDK1.6的***目录
定位问题:
于是上网查找问题原因,有的说是jdk1.7及以后会修改注册表,也就是说***了jdk1.7之后不再是去查找J***A_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)
由上面的截图我们可以看到,1.6和1.7都添加了对应的注册表,所以因为注册表的原因导致用命令java -version命令的时候显示的还是jdk1.7的信息并不成立,那么根本原因又是什么呢?
这个时候我们打开命令行执行where java,在命令行打印出了如下的两行信息:
很明显下面的java.exe正是我们需要的jdk下面的java,那么第一个也就是System32下面的java.exe是什么时候生成的呢?
从修改日期上看到,这与java相关的三个文件是在 13:10左右生成的,我又回过头去安jdk1.7的***时间,如下:
从时间上看应该是***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\W
%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;
C:\Program Files\ATI Technologies\ATI.ACE\Core-S
%J***A_HOME%\
%M2_HOME%\
%CATALINA_HOME%\
%CATALINA_HOME%\bin
可以看到环境变量里%SystemRoot%\system32;在%J***A_HOME%\的前面,这也是为什么执行where java的时候出来的先是system32下的java,那么到现在其实原因已经很明显了,我们需要做的就是给Path环境变量里的%J***A_HOME%\移动到%SystemRoot%\system32的前面,这样就首先找到的是J***A_HOME配置的JDK了,这样问你就得到解决了。
后记:以前遇到问题没有记录的习惯,也不会去刨根问题找问题的根本原因,这其实对于一个技术人来说的话很影响发展,以后我会去认真记录工作中遇到的一些问题,尽可能的做详尽的分析,有问题的地方求指正,免得误导大家。
本文已收录于以下专栏:
相关文章推荐
在服务器上更新了新的 jdk,也在 /etc/profile 中设置了新的 J***A_HOME,并且 source /etc/profile
然后使用java -version 和 javac -v...
最新在做项目时碰到电脑默认***的java jdk1.6,但自己的项目所用到的java jdk1.7。
因此打算将jdk1.6升级到1.7,而又不能影响使用jdk1.6的程序。现将升级方法总结如下:
来自:http://blog.csdn.net/gaoying_blogs/article/details/
之前写过一篇关于MyEclispe10破解的博客:My...
1.首先***jdk1.7
2.在eclipse中添加jdk
3.修改环境变量
4.查看jdk版本
5.重新启动eclispe
6.修改配置文件在项目中找到.setti...
按装sonarqube需要升级jdk到1.7,遇到一个问题,就是从原本的1.6变为1.7一直没有变更过来?
按照正常配置jdk1.7,如图:
这里的1.6直接改为1.7;
classpath和...
导读:执行mybatis自动生成工具,报错,百度得知原来1.7编译出来的class文件放到1.6的环境中会出错,分析到java-version的环境变量为1.6,原来配置环境变量的时候,java_ho...
gradle构建失败的log日志如下:
Gradle sync failed: Could not load wrapper properties from 'E:\studio\My\MyUti...
先前系统上有JDK 6的***,由于要部署Facebook的Presto做一些测试,需要将其升级到JDK 7,但是在***的过程中遇到以下的问题:
[root@x01 data2]# rpm -...
他的最新文章
讲师:宋宝华
讲师:何宇健
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)帖子很冷清,卤煮很失落!求安慰
手机签到经验翻倍!快来扫一扫!
10浏览 / 3回复
没有像他们说的耗电,慢,卡,只是存储空间占用大点,其他暂时可以,没什么新变化而已
顶顶更健康
您需要登录后才可以回帖&&&|&&&&&
可能感兴趣的板块:
用户名/注册邮箱/注册手机号
其他第三方号登录