【发布时间】:2011-03-20 23:58:48
【问题描述】:
如何在 Windows 上更改 Java 运行时版本。
我为一些测试安装了 Java 7,现在我需要旧的 java6 作为系统默认值,但我不想卸载 Java 7(我需要它用于以后的测试)。我可以在控制面板/Java/JRE 选项卡中更改系统使用的JRE 吗?我可以更改/编辑/添加/删除用户使用的版本,但不能更改系统使用的版本。
【问题讨论】:
标签: java windows registry controls panel
如何在 Windows 上更改 Java 运行时版本。
我为一些测试安装了 Java 7,现在我需要旧的 java6 作为系统默认值,但我不想卸载 Java 7(我需要它用于以后的测试)。我可以在控制面板/Java/JRE 选项卡中更改系统使用的JRE 吗?我可以更改/编辑/添加/删除用户使用的版本,但不能更改系统使用的版本。
【问题讨论】:
标签: java windows registry controls panel
对于Java 应用程序,即(通常)作为.jar 文件交付并以java -jar xxx.jar 或通过相同的快捷方式启动的程序,将启动的JRE 将是在PATH 上找到的第一个。
如果您安装了 JRE 或 JDK,找到 .exes 的可能位置在像 C:\Program Files\JavaSoft\JRE\x.y.z 这样的目录下面。但是,我发现一些“开箱即用”的 Windows 安装(还有?)在 C:\winnt\system32(NT 和 2000)或 C:\windows\system(Windows 95、98)中有 java.exe 和 javaw.exe 的副本。这通常是 Java 的一个相当老的版本:1.3,也许吧?您需要在命令窗口中执行 java -version 以检查您是否运行了一些过时的 Java 版本。
您当然可以通过在命令行或快捷方式定义中明确说明 java.exe / javaw.exe 的路径来覆盖 PATH 设置,甚至不使用它。
如果您从浏览器运行 applet,或者可能还运行 Java Web Start 应用程序(它们看起来像应用程序,因为它们有自己的窗口,但您启动它们来自浏览器),JRE 的选择由一组注册表设置决定:
Key: HKEY_LOCAL_MACHINE\Software\JavaSoft\Java Runtime Environment
Name: CurrentVersion
Value: (e.g.) 1.3
使用此方案创建更多注册表项:
(e.g.)
HKEY_LOCAL_MACHINE\Software\JavaSoft\Java Runtime Environment\1.3
HKEY_LOCAL_MACHINE\Software\JavaSoft\Java Runtime Environment\1.3.1
即一个用于主要版本号,一个包含次要版本号。这些键中的每一个都具有如下值(显示示例):
JavaHome : C:\program Files\JavaSoft\JRE\1.3.1
RuntimeLib : C:\Program Files\JavaSoft\JRE\1.3.1\bin\hotspot\jvm.dll
MicroVersion: 1
...您的浏览器将根据这些设置来确定要启动哪个 JRE。
由于 Java 版本变化非常频繁,现在有一个名为“Java 控制面板”的“向导”可以手动切换浏览器的 Java 版本。这适用于 IE、Firefox 以及可能的其他 Opera 和 Chrome:它是 Windows 中的“Java”小程序 System Settings 应用程序。您可以选择任何一个已安装的 JRE。我相信那个向导会摆弄那些注册表项。
如果您像我一样通过简单地清除目录来“卸载”旧 Java 版本,您也会在选择中找到这些“幽灵”;所以请确保您选择的 JRE 对应于完整的 Java 安装!
其他一些答案建议设置环境变量JAVA_HOME。这同时也是过时的建议。 Sun 意识到,在 Java 2 前后,这种环境设置是
几乎没有任何现代 Java 软件需要或尊重 JAVA_HOME 环境变量。
更多信息:
...以及有关多版本支持的一些有用信息:
【讨论】:
java -showversion 而不是java -version。
我曾经在类似 UNIX 的机器上工作,但最近我不得不在 Windows 7 机器上使用 Java。我遇到了这个问题,这就是我已经解决的问题。它对我很有效,所以我希望它可以用于将来可能遇到此问题的任何人。
考虑到驱动器 C 上的默认 Java 安装,公开了这些步骤。如果您的安装不是默认安装,您应该更改必要的设置。
假设我们已经安装了 Java 8,但无论出于何种原因,我们都希望使用 Java 7。
1- 以管理员身份启动 cmd
2- 转到C:\ProgramData\Oracle\Java
3- 将当前目录 javapath 重命名为 javapath_rename javapath javapath_1.8
4- 创建 javapath_mkdir javapath_1.7
5- cd 进入并创建以下链接:
cd javapath_1.7
mklink java.exe "C:\Program Files\Java\jre7\bin\java.exe"
mklink javaw.exe "C:\Program Files\Java\jre7\bin\javaw.exe"
mklink javaws.exe "C:\Program Files\Java\jre7\bin\javaws.exe"
6- cd out 并创建一个目录链接 javapath 指向所需的 javapath。例如:mklink /D javapath javapath_1.7
7- 打开寄存器并将密钥 HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment\CurrentVersion 更改为值为 1.7
此时如果你执行java -version你应该看到你使用的是java 1.7版本:
java version "1.7.0_71"
Java(TM) SE Runtime Environment (build 1.7.0_71-b14)
Java HotSpot(TM) 64-Bit Server VM (build 24.71-b01, mixed mode)
8- 最后,最好创建环境变量 JAVA_HOME。为此,我在 C:\Program Files\Java 中创建了一个名为 CurrentVersion 的目录链接,指向我感兴趣的 Java 版本。例如:
cd C:\Program Files\Java\
mklink /D CurrentVersion .\jdk1.7.0_71
9- 一旦完成:
【讨论】:
java -version 时收到以下错误消息:Error : Registry key 'Software\JavaSoft\Java Runtime Environment'\CurrentVersion has value '1.7' but '1.8' is required. Error : could not find java.dll. Error : Could not find Java SE Runtime Environment
javapath 和 CurrentVersion 目录也是如此(步骤 6 和 8)。祝你好运!
1.8.102 或 1.8.171。不过要小心,我不知道这会有什么副作用。请让我们知道这是否可行,或者如果您找到解决方案,请分享解决方案。
从 Java 1.6 开始,java.exe 安装到支持“-version”命令行选项的 %windir%\system32 中。您可以使用它来选择要运行的特定版本,例如:
java -version:1.7 -jar [path to jar file]
如果已安装,将在 java 1.7 中运行 jar 应用程序。
在此处查看 Oracle 的文档:http://docs.oracle.com/javase/6/docs/technotes/tools/windows/java.html
【讨论】:
一旦我按照浏览器的建议将我的 Java 版本更新为 8。但是,我选择卸载以前用于编码项目的 Java 6 版本。当我输入命令时 cmd 中的“java -version”显示为 1.8,我无法启动在 Java 1.6 上运行的 Eclipse IDE。
当我为浏览器安装 Java 8 更新时,它更改了“PATH”系统变量,将“C:\ProgramData\Oracle\Java\javapath”附加到开头。新添加的路径指向 Java 版本 8。所以我从“PATH”系统变量中删除了该路径,一切正常。 :)
【讨论】:
转到控制面板 --> Java 您可以在此处选择活动版本
【讨论】:
C:\Program Files 中的公共 JRE 将始终用于代替您指定的路径。
您需要做的就是在 Windows 中设置 PATH 环境变量以指向您的 java6 bin 目录而不是 java7 目录。
右击我的电脑>高级系统设置>高级>环境变量
如果有 JAVA_HOME 环境变量,也将其设置为指向正确的目录。
【讨论】:
更新您的环境变量
确保在“路径”中对 java/bin 的引用是最新的;如果您有 JAVA_HOME 或等效设置,这可能是自动的。如果设置了 JAVA_HOME,只需更新它以引用较旧的 JRE 安装。
【讨论】:
如果您使用的是 windows 10 或 windows server 2012,更改 java 运行时版本的步骤如下:
【讨论】: