一台机器多个版本的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共存)