我的机器上最
开
始安装的是
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时遇到的问题,特别是当环境变量指向一个版本而系统默认使用另一个版本的情况。文章详细介绍了如何通过调整注册表设置来解决此类问题。

3678

被折叠的 条评论
为什么被折叠?



