JDK版本不兼容问题之:一台机器安装多个版本的JDK

本文探讨了在同一台计算机上安装多个版本的JDK时出现的问题。具体分析了为何在环境变量指向较高版本的情况下,系统仍使用较低版本的JDK,并提供了解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我的机器上最开始安装的是jdk1.6,后来因为工作需要又安装了jdk1.4。但是,环境变量我并未更改,还是指向jdk1.6的路径的。

可是,在cmd窗口输入 java -version 却得到是1.4.2。

查询环境变量:
1.我的电脑->属性->高级->环境变量
2.
系统环境变量(HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\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 RuntimeEnvironment\
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,将引起难以预料的后果!

般地,当在系统中装了两套或多套版本的Java2SDK,后面安装的Java2 SDK会将自己带的java.exejavaw.exe拷贝到%SystemRoot%\system32目录下,从而覆盖先前版本的java.exe javaw.exe,并且在注册表中改写CurrentVersion为后安装的版本。所以建议在安装Java2SDK前,先卸载以前安装的版本。


转自:http://guojie.blog.51cto.com/59049/45964

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值