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

我的机器上最开始安装的是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

时间: 2024-11-09 10:23:22

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

云1811 Vmware与window版本不兼容问题解决方法

vmware出现下面提示 博主理解: Vmware与window版本不兼容 解决办法有二:升级VMware版本 或降低Windows版本,此处我们选择降低windows的版本. 首先在运行处输入 “services.msc” 点击确定.在弹出来的服务中,找到“Windows Update”找到后双击,在启动类型 处选择“禁用”然后点击应用.(关闭windows自动更新功能). 然后在控制面板找到卸载程序. 选择第一个更新,卸载后重启.(此处卸载了Windows的更新内容,使得Windows版本降

Gradle 'MYasprj' project refresh failed Error:CreateProcess error=216, 该版本的 %1 与您运行的 Windows 版本不兼容

Gradle ‘MYasprj’ project refresh failed Error:CreateProcess error=216, 该版本的 %1 与您运行的 Windows 版本不兼容.请查看计算机的系统信息,了解是否需要 x86 (32 位)或 x64 (64 位)版本的程序,然后联系软件发布者. 解决方案: 你开发项目的引用Javajdk,与本机安装的Java jdk版本不一致,打开项目后,在project structure里面更改一下本机的真实的java jdk路径.  Gr

JDK、Eclipse、Myeclipse、Tomcat等各种软件的版本详解(写给对版本和兼容性问题焦头烂额的你)

这篇文章我们来探讨一下关于JDK.Eclipse.Myeclipse.Tomcat的版本问题. 一.关于版本的几个概念1.32位和64位两个版本:    简言之,64位的操作系统支持识别4G以上的内存条,而32位不行.所以今天我们安装的绝大多数操作系统和各种软件都是64位的(因为我们的电脑一般都大于等于4G内存).如果你安装了32位的jdk,但是你的jar包是64位jdk编译的,肯定是不能运行的.因此,我们强调一点:不管是JDK.Tomcat之类的什么编程相关软件,你都该安装64位的,免得日后有

解决maven3.6版本不兼容idea2017问题

idea报错 #org.jetbrains.idea.maven - IntelliJ IDEA 2017.3.2 Build #IU-173.4127.27 2019-07-24 19:47:21,019 [2456584] ERROR - #org.jetbrains.idea.maven - JDK: 1.8.0_152-release 2019-07-24 19:47:21,019 [2456584] ERROR - #org.jetbrains.idea.maven - VM: Ope

spring定时任务包Quartz版本不兼容

使用spring定时任务包Quartz时,必须使用Quartz1.85以下版本的.     查看发现spring3.0.5中org.springframework.scheduling.quartz.CronTriggerBean继承了     org.quartz.CronTrigger(public class CronTriggerBeanextends CronTrigger),     而在quartz2.1.3中org.quartz.CronTrigger是个接口(publicabs

Selenium2学习-007-WebUI自动化实战实例-005-解决 Firefox 版本不兼容:org.openqa.selenium.WebDriverException: Failed to connect to binary FirefoxBinary

此文主要讲述 Java 运行 Selenium 脚本时,因 Friefox 浏览器版本与 selenium-server-standalone-x.xx.x.jar 不兼容引起的 org.openqa.selenium.WebDriverException: Failed to connect to binary FirefoxBinary 报错解决方法. 希望能对初学 Selenium2 WebUI 自动化测试编程的亲们有所帮助.若有不足之处,敬请大神指正,不胜感激! 之前给朋友初步介绍了 S

低版本系统兼容的ActionBar(二)ActionProvider+分离式ActionBar+分离式的ActionMode

       这篇文章主要讲的是在低版本兼容的ActionBar中实现自定义的ActionProvider,ShareActionProvider的使用方法,如何实现分离式ActionBar,外加在分离式ActionBar上的ActionMode的效果. 一.自定义ActionProvider 建立一个类,继承android.support.v4.view.ActionProvider,然后复写里面的方法即可.主要就是初始化视图和相应点击事件. 范例一: SettingsActionProvid

解决selenium与firefox版本不兼容问题

Python环境下类比 个人使用 32位环境 Python 2.7.12 Selenium 2.53.6 Firefox 47.01 安装selenium可用pip选择对应版本,参考另一教程. 因为在用java打开firefox浏览器的时候报错 org.openqa.selenium.firefox.NotConnectedException: Unable to connect to host 127.0.0.1 on port 7055 after 45000 ms 在网上查阅了说是兼容问题

低版本系统兼容的ActionBar(三)自定义Item视图+进度条的实现+下拉导航+透明ActionBar

       一.自定义MenuItem的视图 custom_view.xml (就是一个单选按钮) <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android