我的机器上最开始安装的是jdk1.6,后来因为工作需要又安装了jdk1.4。但是,环境变量我并未更改,还是指向jdk1.6的路径的。
可是,在cmd窗口输入 java -version 却得到是1.4.2。
查询环境变量:
1.我的电脑->属性->高级->环境变量
2. 系统环境变量(HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment)
当前用户环境变量(HKEY_CURRENT_USER\Environment)
2个设置完全是一样,都是指向1.6。
为了搞清楚问题的原因,通过查询相关的资料,原来是这样的:
JDK在安装的过程当中将在注册表会生成如下3个项目:
HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit
HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Plug-in
HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment
同时,JDK安装程序将会把java.exe,javaw.exe,javareg.exe这3个可执行文件拷贝到%SystemRoot%\system32目录下,由于%SystemRoot%\system32被操作系统缺省的设置为最高优先权的PATH搜索路径,因此可保证用户在命令行任何目录下可运行java.exe来启动JVM。
查询HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment得知CurrentVersion=1.4。
于是我手动将它修改为1.6后,然后运行java -version得到以下结果:
Registry key 'Software\JavaSoft\Java Runtime Environment\
has value '1.6', but '1.4' is required.
Error: could not find java.dll
Error: could not find Java 2 Runtime Environment.
所以,不能简单的修改注册表的CurrentVersion值来达到更改运行的JRE。若人为的修改CurrentVersion,会使得不同版本的java.exe加载与己版本不符的java.dll及 jvm.dll,将引起难以预料的后果!
一般地,当在系统中装了两套或多套版本的Java2 SDK,后面安装的Java2 SDK会将自己带的java.exe和javaw.exe拷贝到%SystemRoot%\system32目录下,从而覆盖先前版本的java.exe和 javaw.exe,并且在注册表中改写CurrentVersion为后安装的版本。所以建议在安装Java2 SDK前,先卸载以前安装的版本。
JDK版本不兼容问题之:一台机器安装多个版本的JDK
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
如果同事暗中伤害你,应该怎么办?
這個饅頭有餡
2019-02-24 13:59:08
职场中,抱怨越多的员工,越被领导瞧不起!
這個饅頭有餡
2019-02-24 13:59:08
老程序员被裁,应届生却能月薪 1.3 万?这你能忍?
前端高達
2019-02-24 13:48:04
遇到到处蹭吃却从不请客吃饭的主怎么办?
樑軍年
2019-02-24 13:26:35
Linux基本操作命令
wbzjacky
2019-02-24 13:12:38
高标准机房综合配线安装
wbzjacky
2019-02-24 13:12:38
IPsec ***实验
wbzjacky
2019-02-24 13:12:37
真实的模拟***综合实验
wbzjacky
2019-02-24 13:12:37
CISCO路由AAA的Easy ***
wbzjacky
2019-02-24 13:12:37
三层交换机的HSRP、vlan、端口聚合
wbzjacky
2019-02-24 13:12:37
sql语法、关系建模
死瘦宅
2019-02-24 22:35:22
MySQL 事务、函数、触发器、数据库备份、权限管理
死瘦宅
2019-02-24 22:35:12