40

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

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

更新:

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

4

11 回答 11

26

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

我以前根本没有C:\home\SFTWR\jdk1.6.0_21\bin在路上,我确实有C:\Program Files (x86)\Java\jre6\bin。我两者都有JRE_HOME,但那两个都不重要JAVA_HOMEC:\home\SFTWR\jdk1.6.0_21我猜 Eclipse 在where java(或UNIX/Linux 上的which )做了(类似的事情)来查看 Java 在路径中的位置,并采用了该 JREjava.exe所属的 JRE。就我而言,尽管我已经完成了所有配置调整(包括eclipse.ini上面建议的 -vm 选项),但它仍然坚持路径中的内容。

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

于 2013-02-27T22:36:39.330 回答
16

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

因此,对于新的工作空间,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
...
于 2013-02-27T05:33:38.773 回答
15

打开 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

于 2013-02-26T21:25:34.570 回答
12

在日食中去

窗口-> Java -> 已安装的 JRE

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

在此处输入图像描述

于 2015-08-19T14:53:17.657 回答
5

我的答案将与两栖动物的答案重叠,同时添加它。

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

;%JAVA_HOME%\bin

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

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

于 2014-02-12T18:23:03.153 回答
5

I ran into a similar issue where eclipse was not using my current %JAVA_HOME% that was on the path and was instead using an older version. The documentation points out that if no -vm is specified in the ini file, eclipse will search for a shared library jvm.dll This appears in the registry under the key HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\JavaSoft\Java Runtime Environment that gets installed when using the windows java installer (key might be a bit different based on 64-bit vs 32-bit, but search for jvm.dll). Because it was finding this shared library on my path before the %JAVA_HOME%/bin, it was using the old version.

Like others have stated, the easiest way to deal with this is to specify the specific vm you want to use in the eclipse.ini file. I'm writing this because I couldn't figure out how it was still using the old version when it wasn't specified anywhere on the path or eclipse.ini file.

See link to doc below: http://help.eclipse.org/kepler/topic/org.eclipse.platform.doc.isv/reference/misc/launcher.html?cp=2_1_3_1

Finding a VM and using the JNI Invocation API

The Eclipse launcher is capable of loading the Java VM in the eclipse process using the Java Native Interface Invocation API. The launcher is still capable of starting the Java VM in a separate process the same as previous version of Eclipse did. Which method is used depends on how the VM was found.

No -vm specified

When no -vm is specified, the launcher looks for a virtual machine first in a jre directory in the root of eclipse and then on the search path. If java is found in either location, then the launcher looks for a jvm shared library (jvm.dll on Windows, libjvm.so on *nix platforms) relative to that java executable.

  • If a jvm shared library is found the launcher loads it and uses the JNI invocation API to start the vm.
  • If no jvm shared library is found, the launcher executes the java launcher to start the vm in a new process.

-vm specified on the command line or in eclipse.ini

Eclipse can be started with "-vm " to indicate a virtual machine to use. There are several possibilities for the value of :

  • directory: is a directory. We look in that directory for:
    • (1) a java launcher or
    • (2) the jvm shared library.

If we find the jvm shared library, we use JNI invocation. If we find a launcher, we attempt to find a jvm library in known locations relative to the launcher. If we find one, we use JNI invocation. If no jvm library is found, we exec java in a new process.

  • java.exe/javaw.exe: is a path to a java launcher. We exec that java launcher to start the vm in a new process.

  • jvm dll or so: is a path to a jvm shared library. We attempt to load that library and use the JNI Invocation API to start the vm in the current process.

于 2015-11-25T16:54:52.253 回答
4

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

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

于 2016-02-27T21:55:34.507 回答
3

我遇到了同样的问题。解决方法:- Window-->Preferences-->Java-->Installed JREs-->Add... - 右键单击​​您的项目-->Build Path-->Configure Build Path-->Add library--> JRE系统库-->下一步-->WorkSpace Default JRE

于 2014-11-11T11:53:22.670 回答
0

尝试更改顺序:右键单击您的项目-> BuildPath->Configure...->Order and Export 选项卡-> 向上移动 jre7。

于 2013-09-02T17:25:39.193 回答
0

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

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

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

于 2018-08-11T06:03:20.147 回答
-1

我导航到:

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

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

于 2014-04-16T19:48:39.033 回答