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

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

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

【问题讨论】:

    标签: java windows registry controls panel


    【解决方案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 前后,这种环境设置是

    1. 不可靠,因为用户经常设置不正确,并且
    2. 不必要,因为运行时很容易找到 Java 库目录,知道它们位于相对于 java.exe 或 javaw.exe 启动路径的固定路径中。

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


    更多信息:

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

    【讨论】:

    • 默认的 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 引入的关于路径位置切换的新最佳实践。见stackoverflow.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 运行时版本的步骤如下:

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

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2011-11-10
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多