【问题标题】:How to change default JRE for all Eclipse workspaces?如何更改所有 Eclipse 工作区的默认 JRE?
【发布时间】:2013-02-26 21:23:28
【问题描述】:

我在C:\Program Files (x86)\Java\jre6 中有一个 JRE,而那是我安装 Eclipse 时唯一的一个。我随后在C:\home\SFTWR\jdk1.6.0_21 中安装了一个完整的JDK,并将我的JAVA_HOME 环境变量更改为那个。但是,每次我启动一个新的 Eclipse 工作区时,它只会选择旧的 JRE,我必须手动删除它并添加新的。

如何将我的 Eclipse 安装绑定到新的 JDK,以便每个新的工作区都只指向它?我检查了eclipse.ini,但没有提到要转到哪个 JRE。

更新:

我进入Prefs->Java->Installed JREs,添加新位置,将其标记为默认,删除另一个,它仅对当前工作区有效。但是,当我打开一个新工作区时,只有旧的 JRE 可用。所以这并没有改变适用于所有(至少是新的)工作区的核心 Eclipse 配置

【问题讨论】:

    标签: eclipse java


    【解决方案1】:

    终于明白了:Eclipse 获取 JRE 的方式是使用系统的 PATH

    我之前在路径中根本没有C:\home\SFTWR\jdk1.6.0_21\bin,而我确实有C:\Program Files (x86)\Java\jre6\bin。我将JRE_HOMEJAVA_HOME 都设置为C:\home\SFTWR\jdk1.6.0_21,但这两者都不重要。我猜 Eclipse 做了(某些事情)where java(或 which 在 UNIX/Linux 上)查看 Java 在路径中的位置,并将 JRE 带到了java.exe 属于。就我而言,尽管我已经完成了所有配置调整(包括上面建议的eclipse.ini -vm 选项),但它仍然停留在路径中。

    我从路径中删除了旧的 JRE bin,放入了新的,它适用于所有工作区。

    【讨论】:

    • 别忘了拿起你的Sock Puppet - 尽管找到你的头来放置它可能很困难。 ;-)
    • 我想知道 eclipse 团队是否会让 eclipse 甚至远程用户友好。 FFS .... 昨天这确实工作得很好,今天没有警告就决定我没有花足够的工作日来服务 Eclipse。谢谢你......让我不必无数次重新安装java来安抚日食。下次生病只是提前牺牲一只羔羊或其他东西。
    • The way Eclipse picks up the JRE is using the system's PATH 错误。我在PATH 中没有单独提及 Java,但 Eclipse 出于某种原因还是选择了 Java 11,而忽略了在首选项中安装的 JRE 设置中仅添加了 Java 8。
    【解决方案2】:

    已安装的 JRE 用于为您的下游 Java 项目和服务器执行哪些 JRE。至于用于执行由您的环境、历史记录和 eclipse.exe 二进制文件控制的 Eclipse 进程(工作台)本身的 JVM 或 JRE。所以 eclipse.exe 本身决定了 Eclipse 将使用什么 JRE 来执行自己,而不是安装 JRE 首选项,因为这些首选项在 OSGi 框架启动并运行之前不会被读取,在选择 JVM/JRE 后加载。

    因此,对于新工作区,Eclipse 将使用其当前执行的 JRE 来填充 JRE 首选项。

    我知道的最好方法是强制 eclipse.exe 使用您通过 -vm 开关告诉它的 JRE。所以在你的 eclipse.ini 中这样做:

    -startup
    plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar
    --launcher.library
    plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.100.v20110502
    -vm
    /path/to/exactly/what/jre/you/want/as/default/javaw.exe
    ...
    

    【讨论】:

    • 这不起作用。我加了-vm C:\home\SFTWR\jdk1.6.0_21\bin\javaw.exe
    • 您是否将 -vm 作为路径放在单独的行上?它应该看起来像 -vm C:/home/...
    • 它对我有用,只是在 Eclipse 配置文件中添加了 --vm C:\Program Files\Java\jdk1.8.0_131\jre\bin\javaw.exe
    • 这解决了我的问题 - eclipse.ini 将旧版本的 java 硬编码为 "-vm" 。一旦我删除了“-vm \path\to\non-existent\java”这一行,它就可以选择新版本了。
    【解决方案3】:

    打开 Java > Installed JREs 首选项页面。勾选上的框 要分配为默认 JRE 的 JRE 行 工作台。如果您要指定为默认值的 JRE 没有 出现在列表中,您必须添加它。点击确定。

    来源-http://help.eclipse.org/juno/index.jsp?topic=%2Forg.eclipse.jdt.doc.user%2Ftasks%2Ftask-assign_default_jre.htm

    【讨论】:

    • 这也不起作用。我进入Prefs->Java->Installed JREs,添加新位置,将其标记为默认,删除另一个,它仅对当前工作区有效。当我打开一个新工作区时,只有旧的 JRE 可用
    • 是的,我创建了一个全新的工作区,更改了 JRE,然后关闭了它。然后打开另一个新工作区,希望之前的 JRE 更改会生效,但它没有因为我只有旧的 JRE
    • it was effective only for the current workspace 此外,对我来说,即使对于那个工作空间也没有效果。我在首选项中只列出了 一个 JRE,但 Eclipse 还是使用了另一个
    【解决方案4】:

    在eclipse中去

    Window-> Java -> 已安装的 JRE

    您可以通过指定安装 jdk 的路径来删除当前安装的 jre 并添加 jdk。

    【讨论】:

      【解决方案5】:

      我遇到了一个类似的问题,即 eclipse 没有使用我当前在 path 上的 %JAVA_HOME%,而是使用旧版本。文档指出,如果在 ini 文件中没有指定 -vm,eclipse 将搜索共享库 jvm.dll 这出现在注册表中使用 windows java 安装程序时安装的键 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\JavaSoft\Java Runtime Environment 下(键可能基于 64 位和 32 位略有不同,但请搜索 jvm.dll)。因为它在%JAVA_HOME%/bin之前在我的path上找到了这个共享库,所以它使用的是旧版本。

      正如其他人所说,处理这个问题的最简单方法是在eclipse.ini 文件中指定您要使用的特定虚拟机。我写这篇文章是因为我无法弄清楚它是如何仍在使用旧版本的,因为它没有在 patheclipse.ini 文件的任何地方指定。

      请参阅下面的文档链接: http://help.eclipse.org/kepler/topic/org.eclipse.platform.doc.isv/reference/misc/launcher.html?cp=2_1_3_1

      查找 VM 并使用 JNI 调用 API

      Eclipse 启动器能够使用 Java Native Interface Invocation API 在 eclipse 进程中加载​​ Java VM。启动器仍然能够在一个单独的进程中启动 Java VM,就像以前版本的 Eclipse 所做的一样。使用哪种方法取决于如何找到 VM。

      未指定 -vm

      当没有指定 -vm 时,启动器首先在 eclipse 根目录下的 jre 目录中查找虚拟机,然后在搜索路径中查找。如果在任一位置找到 java,则启动器会查找与该 java 可执行文件相关的 jvm 共享库(在 Windows 上为 jvm.dll,在 *nix 平台上为 libjvm.so)。

      • 如果找到 jvm 共享库,启动器会加载它并使用 JNI 调用 API 来启动 vm。
      • 如果没有找到 jvm 共享库,则启动器执行 java 启动器以在新进程中启动 vm。

      在命令行或eclipse.ini中指定-vm

      Eclipse 可以使用“-vm”启动,以指示要使用的虚拟机。的值有多种可能性:

      • 目录: 是一个目录。我们在该目录中查找:
        • (1) java 启动器或
        • (2) jvm 共享库。

      如果我们找到 jvm 共享库,我们使用 JNI 调用。如果我们找到一个启动器,我们会尝试在相对于启动器的已知位置找到一个 jvm 库。如果我们找到一个,我们使用 JNI 调用。如果没有找到 jvm 库,我们在一个新进程中执行 java。

      • java.exe/javaw.exe: 是 java 启动器的路径。我们执行该 java 启动器以在新进程中启动 vm。

      • jvm dll 左右: 是 jvm 共享库的路径。我们尝试加载该库并使用 JNI Invocation API 在当前进程中启动 vm。

      【讨论】:

        【解决方案6】:

        我的答案将与两栖动物的答案重叠。

        您的 JAVA_HOME 变量很好,但您还需要将以下内容附加到您的 Path 变量:

        ;%JAVA_HOME%\bin
        

        这将允许您在 Windows 环境中的应用程序访问您的 JDK。添加这些环境变量后,您还应该重新启动计算机,然后再检查它们是否有效。就我而言,即使注销然后重新登录也不起作用:我必须完全重新启动。

        如果要检查环境变量是否设置正确,可以打开命令提示符并键入 >echo %JAVA_HOME 和 >echo %Path% 以查看这些变量是否正常工作。在窥探解决方案时,我还遇到有人声称如果您的 JAVA_HOME 路径包含空格,他们需要在环境变量周围添加引号 (") 以使其正常工作 ("%JAVA_HOME%"\bin)。我认为这是我的起初是这样,但在完全重新启动后,尽管有空格,但我的变量似乎在没有引号的情况下可以正常工作。

        【讨论】:

          【解决方案7】:

          当你选择运行配置时,主点击旁边有一个JRE点击,选择“Workspace default JRE(JDK1.7)”。

          一定要用Prefs->Java->Installed JREs ->Execution Environment中的jdk

          【讨论】:

            【解决方案8】:

            我也遇到过同样的问题。决心: - Window-->Preferences-->Java-->Installed JREs-->Add... - 右击你的项目-->构建路径-->配置构建路径-->添加库-->JRE系统库-->下一步-->WorkSpace Default JRE

            【讨论】:

              【解决方案9】:

              尝试更改顺序: 右键单击您的项目-> BuildPath-> 配置...-> 订购和导出选项卡-> 向上移动 jre7。

              【讨论】:

                【解决方案10】:

                在 Windows 上,我尝试了不同的方法 - 设置 JAVA_HOME、JRE_HOME 并扩展 PATH 以指向所需的 jre18,但没有任何帮助 - 在 Java 控制面板中禁用 JRE17 也无济于事

                帮助我的是强制 eclipse 在 eclipse.ini 文件中使用适当的 JRE,例如

                -vm C:\java\jdk1.8.0_111\jre\bin\javaw.exe

                【讨论】:

                  【解决方案11】:

                  我导航到:

                  Eclipse>Pref>Java>Installed JRE>Search...
                  

                  其中 2 个弹出,我检查了最新的一个。在我这样做之前,我还去了About>Check for Updates 并更新了它。我也不必重新安装任何 JRE 或 JDK。我可能已经做了一段时间了,除了它是 1.6 而不是 1.4。希望对您有所帮助!

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 2012-09-01
                    • 2012-03-23
                    • 2016-04-25
                    • 2022-08-24
                    • 2011-10-26
                    • 1970-01-01
                    • 1970-01-01
                    • 2014-09-16
                    相关资源
                    最近更新 更多