我在C:\Program Files (x86)\Java\jre6
中有一个JRE,这是我安装Eclipse时唯一的一个JRE。我随后在C:\home\SFTWR\jdk1.6.0_21
中安装了一个完整的JDK,并将我的JAVA_HOME
环境变量更改为。但是,每次我启动一个新的Eclipse工作区时,它只会选择旧的JRE,我必须手动删除它并添加新的JRE。
如何将Eclipse安装绑定到新JDK,以便每个新工作区仅指向该JDK?我检查了eclipse.ini
但是没有参考JRE要去的地方。
更新
我进入了Prefs->Java->Installed JRE
,添加了新位置,将其标记为默认位置,删除了另一个位置,并且仅对当前工作空间有效。但是,当我打开一个新工作区时,只有旧的JRE可用。因此,这并没有改变适用于所有(至少是新的)工作空间的核心Eclipse配置
答案 0 :(得分:24)
最后得到它: Eclipse选择JRE的方式是使用系统的PATH 。
之前我在路径中没有C:\home\SFTWR\jdk1.6.0_21\bin
,我确实有C:\Program Files (x86)\Java\jre6\bin
。我将JRE_HOME
和JAVA_HOME
都设置为C:\home\SFTWR\jdk1.6.0_21
,但这两者都不重要。我猜Eclipse(确实有效)其中java (或UNIX / Linux上的 )来查看Java在路径中的位置并将JRE带到了java.exe
属于。在我的情况下,尽管我已经完成了所有的配置调整(包括上面建议的eclipse.ini
-vm选项),但它仍然坚持路径中的内容。
我从路径中删除了旧的JRE bin,将新的JRE bin放入其中,它适用于所有工作区。
答案 1 :(得分:15)
打开Java>已安装的JRE首选项页面。选中该复选框 您想要指定为JRE中的JRE的行 工作台。如果要分配的JRE不是默认值 出现在列表中,您必须添加它。单击“确定”。
答案 2 :(得分:12)
已安装的JRE用于为下游Java项目和服务器执行的JRE。至于用于执行Eclipse进程(工作台)本身的JVM或JRE,它由您的环境,历史记录和eclipse.exe二进制文件控制。所以eclipse.exe本身决定JRE Eclipse将自己执行什么,而不是安装JREs首选项,因为在选择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
...
答案 3 :(得分:9)
答案 4 :(得分:5)
我的答案将与amphibient重叠,同时加入它。
您的JAVA_HOME变量很好,但您还需要将以下内容附加到Path变量中:
;%JAVA_HOME%\bin
这将允许Windows环境中的应用程序访问您的JDK。一旦添加了这些环境变量,您还应该重新启动计算机,然后再检查它们是否有效。在我的情况下,即使退出然后重新登录也不起作用:我必须完全重启。
如果要检查环境变量是否设置正确,可以打开命令提示符并键入> echo %JAVA_HOME
和> echo %Path%
以查看这些变量是否正常工作。在窥探解决方案时,我也遇到过人们声称如果你的JAVA_HOME路径包含空格,他们需要在环境变量周围添加引号(“)以使它们正常工作("%JAVA_HOME%"\bin
。”我认为这个起初是我的情况,但在完全重新启动后,我的变量似乎在没有引号的情况下正常工作,尽管有空格。
答案 5 :(得分:5)
我遇到了类似的问题,其中eclipse没有使用%JAVA_HOME%
上的当前path
而是使用旧版本。文档指出,如果在ini文件中没有指定-vm
,eclipse将搜索共享库jvm.dll
这将在注册表中显示在使用时安装的密钥HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\JavaSoft\Java Runtime Environment
下Windows java安装程序(密钥可能有点不同,基于64位与32位,但搜索jvm.dll
)。因为它是在path
%JAVA_HOME%/bin
之前找到这个共享库,所以它使用旧版本。
与其他人一样,处理此问题的最简单方法是在eclipse.ini
文件中指定要使用的特定vm。我写这篇文章是因为当path
或eclipse.ini
文件中未指定版本时,我无法弄清楚它是如何使用旧版本的。
请参阅下面的doc链接: 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。启动程序仍然能够在与以前版本的Eclipse相同的单独进程中启动Java VM。使用哪种方法取决于VM的找到方式。
未指定-vm
如果未指定-vm,则启动程序首先在eclipse的根目录中的jre目录中查找虚拟机,然后在搜索路径上查找。如果在任一位置找到java,则启动程序将查找相对于该java可执行文件的jvm共享库(Windows上的jvm.dll,* nix平台上的libjvm.so)。
在命令行或eclipse.ini中指定
- 如果找到jvm共享库,启动器会加载它并使用JNI调用API来启动虚拟机。
- 如果找不到jvm共享库,启动程序将执行java启动程序以在新进程中启动vm。
-vm
可以使用“-vm”启动Eclipse以指示要使用的虚拟机。价值有以下几种可能性:
- 目录:是一个目录。我们在该目录中查找:
- (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 :(得分:1)
当您选择运行配置时,主要点击旁边会有一个JRE点按,选择" 工作区默认JRE(JDK1.7)"。
请务必使用Prefs->Java->Installed JREs ->Execution Environment
答案 7 :(得分:0)
尝试更改顺序: 右击你的项目 - > BuildPath->配置...->订单和导出标签 - >移动jre7 UP。
答案 8 :(得分:0)
我遇到过同样的问题。决心: - 窗口 - >首选项 - > Java - >已安装的JRE - >添加... - 右键单击您的项目 - >构建路径 - >配置构建路径 - >添加库 - > JRE系统库 - >下一步 - > WorkSpace默认JRE
答案 9 :(得分:0)
在Windows上,我尝试了不同的方法 -设置JAVA_HOME,JRE_HOME并扩展PATH以指向所需的jre18,但没有任何帮助 -在Java控制面板中禁用JRE17也没有帮助
帮助我的是强制eclipse在eclipse.ini文件中使用适当的JRE,例如
-虚拟机 C:\ java \ jdk1.8.0_111 \ jre \ bin \ javaw.exe
答案 10 :(得分:-1)
我导航到:
Eclipse>Pref>Java>Installed JRE>Search...
其中2个弹出,我检查了最新的一个。在我这样做之前,我还去了About>Check for Updates
并更新了它。我也没有必要重新安装任何JRE或JDK。我可能已经做了一段时间,除了它是1.6而不是1.4。希望有所帮助!