如何在 Windows (7) 上更改 Java 运行时版本?

Posted

技术标签:

【中文标题】如何在 Windows (7) 上更改 Java 运行时版本?【英文标题】:How can I change the Java Runtime Version on Windows (7)? 【发布时间】:2011-03-20 23:58:48 【问题描述】:

如何在 Windows 上更改 Java 运行时版本。

我为一些测试安装了 Java 7,现在我需要旧的 java6 作为系统默认值,但我不想卸载 Java 7(我需要它用于以后的测试)。我可以在控制面板/Java/JRE 选项卡中更改系统使用的JRE 吗?我可以更改/编辑/添加/删除用户使用的版本,但不能更改系统使用的版本。

【问题讨论】:

【参考方案1】:

对于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.exejavaw.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.exe 或 javaw.exe 启动路径的固定路径中。

几乎没有任何现代 Java 软件需要或尊重 JAVA_HOME 环境变量。


更多信息:

http://java.sun.com/j2se/1.3/runtime_win32.html http://www.rgagnon.com/javadetails/java-0604.html

...以及有关多版本支持的一些有用信息:

http://www.rgagnon.com/javadetails/java-0604.html

【讨论】:

默认的 Java7 向导还会将 java.exe、javaw.exe 和 javaws.exe 安装到 Windows 7 上的 C:\Windows\System32\。这不是遗留问题。无论如何,答案都很好! 如果您更新 Java 版本,您可能会发现您仍在使用旧版本(如果它位于 PATH 环境变量中)。 @LucasHoepner - 更新版本的 java 将存根安装到 c:\windows\system32 扫描系统以识别最新安装的 java 版本并调用它。由于这个副本,他们默认调用过期版本不会有问题。 试试java -showversion 而不是java -version 非常好的和详细的答案,但是缺少 java 引入的关于路径位置切换的新最佳实践。见***.com/questions/27996603。【参考方案2】:

我曾经在类似 UNIX 的机器上工作,但最近我不得不在 Windows 7 机器上使用 Java。我遇到了这个问题,这就是我已经解决的问题。它对我很有效,所以我希望它可以用于将来可能遇到此问题的任何人。

考虑到驱动器 C 上的默认 Java 安装,公开了这些步骤。如果您的安装不是默认安装,您应该更改必要的设置。

在 Windows 7 上更改 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_HOME 以指向 JDK 软件所在的位置,在这种情况下为 C:\Program Files\Java\CurrentVersion

【讨论】:

@Mia 嗨,Mia,我尝试了这个解决方案,但在执行 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 嗨@YassinHajaj,我不知道我是否能帮上忙,因为我目前没有这个设置了。无论如何,看起来您的路径上可能存在一些问题。确保您实际上不是在复制文件,而是在创建软链接(步骤 5)。 javapathCurrentVersion 目录也是如此(步骤 6 和 8)。祝你好运! @Mia 感谢您抽出宝贵时间回复。我一回家就试试。否则,我注定要使用 Java 8 :D。但它适用于 android,现在兼容,所以实际上没什么大不了的。 如果我尝试在相同的 1.8 或 1.7 中切换 java 版本构建,例如 java 8 102 或 java 8 171,它将不起作用 嗨@HarveyLin。我不知道,因为自 2015 年以来我就没有使用这个,而且我不再有这个设置了。我建议在 步骤 7 上设置特定的 java 版本,所以它是 1.8.1021.8.171。不过要小心,我不知道这会有什么副作用。请让我们知道这是否可行,或者如果您找到解决方案,请分享解决方案。【参考方案3】:

从 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

【讨论】:

【参考方案4】:

一旦我按照浏览器的建议将我的 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”系统变量中删除了该路径,一切正常。 :)

【讨论】:

【参考方案5】:

转到控制面板 --> Java 您可以在此处选择活动版本

【讨论】:

这对 Java 7 无效,C:\Program Files 中的公共 JRE 将始终用于代替您指定的路径。 如果PATH变量被另一个java安装覆盖,最好修改它。【参考方案6】:

您需要做的就是在 Windows 中设置 PATH 环境变量以指向您的 java6 bin 目录而不是 java7 目录。

右击我的电脑>高级系统设置>高级>环境变量

如果有 JAVA_HOME 环境变量,也将其设置为指向正确的目录。

【讨论】:

【参考方案7】:

更新您的环境变量

确保在“路径”中对 java/bin 的引用是最新的;如果您有 JAVA_HOME 或等效设置,这可能是自动的。如果设置了 JAVA_HOME,只需更新它以引用较旧的 JRE 安装。

【讨论】:

【参考方案8】:

如果您使用的是 windows 10 或 windows server 2012,更改 java 运行时版本的步骤如下:

    使用“运行”打开 regedit 导航到 HKEY_LOCAL_MACHINE -> SOFTWARE -> JavaSoft -> Java Runtime Environment 在这里您将看到您在 PC 上安装的所有 java 版本。对我来说,我安装了几个版本的 java 1.8,所以这里显示的文件夹是 1.8、1.8.0_162 和 1.8.0_171 单击“1.8”文件夹,然后双击 JavaHome 和 RuntimeLib 键,将其中的版本号更改为您希望 PC 运行的任何 Java 版本。例如,如果 key 的 Value 数据为“C:\Program Files\Java\jre1.8.0_171”,您可以将其更改为“C:\Program Files\Java\jre1.8.0_162”。 然后您可以通过在命令行中键入“java -version”来验证版本更改。

【讨论】:

以上是关于如何在 Windows (7) 上更改 Java 运行时版本?的主要内容,如果未能解决你的问题,请参考以下文章

在 Windows 7 上更改/重置 postgresql 用户密码

Windows 在哪里保存 JDK 位置参考?

在Windows 7上更改/重置postgresql用户密码

如何在 Windows 上更改 java -version 以显示 Java 1.9 [重复]

如何在 Windows 7 上删除 Java 程序的标题栏和任务栏图标?

在 Windows 上更改文件的大小写? [复制]