博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JDK版本不兼容问题之:一台机器安装多个版本的JDK
阅读量:4682 次
发布时间:2019-06-09

本文共 1376 字,大约阅读时间需要 4 分钟。

原创作品,允许转载,转载时请务必以超链接形式标明文章  、作者信息和本声明。否则将追究法律责任。

 

 

我的机器上最开始安装的是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前,先卸载以前安装的版本。

转载于:https://www.cnblogs.com/freeton/p/3650551.html

你可能感兴趣的文章
maven使用阿里镜像配置文件
查看>>
Java之字符流操作-复制文件
查看>>
iOS开发UI篇—实现一个私人通讯录小应用(二)
查看>>
iOS开发UI篇—UITableview控件使用小结
查看>>
lesson1 预备知识
查看>>
Copy code from eclipse to word, save syntax.
查看>>
arguments.callee的作用及替换方案
查看>>
23 Java学习之RandomAccessFile
查看>>
SSH远程会话管理工具 - screen使用教程
查看>>
hibernate validation HV000030: No validator could be found for constraint
查看>>
Telink MESH SDK 如何使用PWM
查看>>
LR SP PC
查看>>
C# 图片识别(支持21种语言)【转】
查看>>
jQuery基础教程
查看>>
P2709 小B的询问
查看>>
第三组的抓包作业
查看>>
ILNumerics项目的应用之线性方程
查看>>
django考点
查看>>
python-socket
查看>>
Android中intent如何传递自定义数据类型
查看>>