如何更改所有Eclipse工作区的默认JRE?

时间:2013-02-26 21:23:28

标签: eclipse java

我在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配置

11 个答案:

答案 0 :(得分:24)

最后得到它: 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(确实有效)其中java (或UNIX / Linux上的 )来查看Java在路径中的位置并将JRE带到了java.exe属于。在我的情况下,尽管我已经完成了所有的配置调整(包括上面建议的eclipse.ini -vm选项),但它仍然坚持路径中的内容。

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

答案 1 :(得分:15)

  

打开Java>已安装的JRE首选项页面。选中该复选框   您想要指定为JRE中的JRE的行   工作台。如果要分配的JRE不是默认值   出现在列表中,您必须添加它。单击“确定”。

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

答案 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)

在日食中转到

<强>窗口 - &GT; Java - &gt;已安装的JRE

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

enter image description here

答案 4 :(得分:5)

我的答案将与amphibient重叠,同时加入它。

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

;%JAVA_HOME%\bin

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

如果要检查环境变量是否设置正确,可以打开命令提示符并键入&gt; echo %JAVA_HOME和&gt; 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。我写这篇文章是因为当patheclipse.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)。

     
      
  • 如果找到jvm共享库,启动器会加载它并使用JNI调用API来启动虚拟机。
  •   
  • 如果找不到jvm共享库,启动程序将执行java启动程序以在新进程中启动vm。
  •   
     在命令行或eclipse.ini中指定

-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点按,选择&#34; 工作区默认JRE(JDK1.7)&#34;。

请务必使用Prefs->Java->Installed JREs ->Execution Environment

中的jdk

答案 7 :(得分:0)

尝试更改顺序: 右击你的项目 - &gt; BuildPath-&gt;配置...-&gt;订单和导出标签 - &gt;移动jre7 UP。

答案 8 :(得分:0)

我遇到过同样的问题。决心: - 窗口 - &gt;首选项 - &gt; Java - &gt;已安装的JRE - &gt;添加... - 右键单击​​您的项目 - &gt;构建路径 - &gt;配置构建路径 - &gt;添加库 - &gt; JRE系统库 - &gt;下一步 - &gt; 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。希望有所帮助!