原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://guojie.blog.51cto.com/59049/45964

我的机器上最开始安装的是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的更多相关文章

  1. cuda和gcc版本不兼容

    gcc8.1和cuda9.0版本不兼容,比较坑. 下面是各版本cuda支持的gcc: 从CUDA 4.1版本开始,现在支持gcc 4.5.gcc 4.6和4.7不受支持. 从CUDA 5.0版本开始, ...

  2. 如何在一台计算机上安装多个 JDK 版本

    前言 对于使用 Java 语言开发的朋友可能会遇到这种情况,有时想学习和探索 Java 的最新版本提供的一些新特性,比如 Java 11,但你无法将其安装在自己的计算机上,因为你的团队正在使用比这个旧 ...

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

    这篇文章我们来探讨一下关于JDK.Eclipse.Myeclipse.Tomcat的版本问题.一.关于版本的几个概念1.32位和64位两个版本:    简言之,64位的操作系统支持识别4G以上的内存条 ...

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

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

  5. 【我的Android进阶之旅】解决 Error:CreateProcess error=216, 该版本的 %1 与您运行的 Windows 版本不兼容。请查看计算机的系统信息,了解是否需要 x86

    一.错误描述 刚刚打开Android Studio新建一个项目,然后就编译不了,报了如下所示的错误: 错误描述为: Error:CreateProcess error=216, 该版本的 %1 与您运 ...

  6. 使用Qt5.7.0 VS2015版本生成兼容XP的可执行程序 good(从VS2012 update1开始支持xp和c++11)

    一.直接使用VS2012/VS2013/VS2015生成XP兼容的可执行程序 Visual Studio刚发布时没打补丁,称为RTM版,之后会陆续发布补丁,进行bug修复和功能增强.VS2010及之前 ...

  7. 解决Selenium与firefox浏览器版本不兼容问题

    因为在用java打开firefox浏览器的时候报错 org.openqa.selenium.firefox.NotConnectedException: Unable to connect to ho ...

  8. 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 ...

  9. php 5.6 与之前版本不兼容中的数组属性定义辨析

    在php5.6官方文档的不兼容页(http://php.net/manual/zh/migration56.incompatible.php)中提到了几个与以前版本不兼容的情况,其中提到了为类定义数组 ...

随机推荐

  1. PLSQL往表中插入中文乱码解决办法

    1.查看服务器端编码:select userenv('language') from dual; 2.查看第一行中PARAMETER项中为NLS_LANGUAGE 对应的VALUE项中是否和第一步得到 ...

  2. DevOps的修炼之路!

    作为一名产品经理,首先要知道产品对于所属公司来说意味着什么,要探寻这个问题,我们又得知道和公司息息相关的是什么,在我的理解来看,与公司状况相关的因素有以下这些: 市场份额 平均订单金额 盈利能力 资产 ...

  3. lock模拟CountDownEvent

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  4. 复利test

    因为上节课老师有给我们讲了单元测试的概念及其基本操作,我就对我之前的复利计算器进行了改进和测试.因为从控制台的简单输入输出对单元测试来说不够完善,便参考了其他同学的优秀编程又重新写了一个复利计算器的框 ...

  5. hdoj 2680 choose the best route

    Problem Description One day , Kiki wants to visit one of her friends. As she is liable to carsicknes ...

  6. 删除xcode中的描述文件的路径

    打开Finder  commend + shift +g 进入文件夹  : ~/Library/MobileDevice/Provisioning Profiles  删除即可

  7. 50条LINUX命令整理

    1. find 基本语法参数如下: find [PATH] [option] [action] # 与时间有关的参数: -mtime n : n为数字,意思为在n天之前的“一天内”被更改过的文件: - ...

  8. 从原生APK反编译,拿到界面,用于mono for android

    从原生APK反编译,拿到界面,用于mono for android 1.用apktool反编译apk,得到xxx.apk.de 2.从xxx.apk.de\res\layout 3.复制所有xml到M ...

  9. 第12周&第13周

    12&13:STL Standard Template Library sort, binary_search/lower_bound/upper_bound, multiset, set, ...

  10. ReactiveCocoa 5.0 初窥:可能是最痛的一次升级

    RAC 5.0 相比于 4.0 有了巨大的变化,不仅是受 swift 3.0 大升级的影响,RAC 对自身项目结构的也进行了大幅度的调整.这个调整就是将 RAC 拆分为四个库:ReactiveCoco ...