Eclipse - 没有Java(JRE)/(JDK)...没有虚拟机

286

我正在尝试让Eclipse v3.5(Galileo)在我的计算机上重新运行 - 我以前已经运行过它,没有任何问题,但是现在我一直收到以下错误:

必须提供Java Runtime Environment(JRE)或Java Development kit(JDK)才能运行Eclipse。在搜索以下位置后未找到Java虚拟机: C:\ eclipse \ jre \ javaw.exe 当前路径中的javaw.exe

我刚刚安装了JDK和SDK。

我使用的操作系统是Windows 7(x64)。

怎么回事?我该如何解决?

我无法运行任何ipconfig / tracert /或ping命令。


3
“Java Runtime Environment”是JRE,不是SDK。 - user85421
1
安装JRE - 这将在您的路径中提供javaw.exe。 JDK没有。 - Thorbjørn Ravn Andersen
12
@Carlos,每个JDK都带有一个私有的JRE。 - Thorbjørn Ravn Andersen
3
@Thorbjørn: 那有什么意义呢?我知道这一点,也知道JDK还提供了一个公共 JRE。我写过“Java Runtime Environment不是SDK”,但你需要阅读原帖(在1月11日编辑之前)才能理解为什么我写了它:“一个Java Runtime Environment (SDK)或…” - user85421
11
如果您最近在安装Eclipse之后安装了JDK,并且安装位置与之前不同,那么您可能会遇到此问题。这是因为当第一次设置Eclipse时,eclipse.ini文件中已经硬编码了JDK路径。只需在eclipse.ini中更改正确的JDK路径即可解决此错误。 - Rajaraman Subramanian
显示剩余3条评论
35个回答

224
Eclipse默认会尝试使用默认的“java.exe”(由您的PATH引用的第一个)进行启动。
需要记住三件事情:
  • 安装JRE或JDK可以像解压缩或从另一台计算机复制一样简单:没有特殊的安装步骤,您可以在磁盘上几乎任何地方“安装”(复制)许多不同的JVM版本(1.4、5.0、6.0等)。
  • 我建议始终使用最新的JRE运行Eclipse(以从最新的热点演变中受益)。 您可以:
  • 您将在Eclipse会话中引用的JVM并不总是用于启动Eclipse的JVM,因为:
    • 您只需要一个JRE来启动Eclipse,但是一旦启动Eclipse,您应该为您的项目注册一个JDK(特别是对于Java源代码和调试目的,在理论上还包括编译,但是Eclipse有自己的Java编译器) 注意:您可以在Eclipse中仅注册JRE,因为它足以运行您的程序,但是再次使用JDK将允许进行更多操作。
    • 即使Eclipse中默认注册的Java是用于启动会话的Java,您也可以想要注册旧的SDK(包括非Sun的SDK),以便使用与实际上将在生产中使用的类似的JRE运行/调试程序。

Installed JREs


2012年6月,jmbertucci 评论道:

我正在运行Windows 7 64位系统,安装了32位JRE。 我下载了64位的Eclipse,它需要64位的JRE。 因为我没有64位的JRE,所以出现了错误,这很合理。

我去了Java手动安装页面(不像你想象中那么直接),并安装了64位版本。请参见“Java Downloads for All Operating Systems”。 这就是我所需要的。


April 2016: Steve Mayne评论中提到:我必须编辑eclipse.ini文件以引用正确的Java路径 - 当eclipse.ini中有值时,Eclipse根本不使用环境变量PATH

43
这个问题/答案有点旧,但我遇到了这个问题,所以我会发布我的笔记。我使用的是Win7 64位系统,并且安装了32位JRE。我下载了寻找64位JRE的Eclipse 64位版本。由于我没有64位JRE,它就会抛出错误,这是有道理的。我前往Java手动安装页面(不像你想象中那么直接)并安装了64位版本。http://www.java.com/en/download/manual.jsp 那就是我所需要的。 - jmbertucci
2
@Nuktu:我已经将jmbertucci的评论添加到答案中。 - VonC
我曾经遇到过同样的问题,安装64位Java解决了这个问题。 - hexicle
3
@VonC 我不得不编辑eclipse.ini文件以引用正确的Java路径 - 当eclipse.ini中有值时,Eclipse根本不使用环境PATH。 - Steve Mayne
1
@SteveMayne 很有趣,谢谢你。我已经在答案中包含了你的评论以提高可见性。 - VonC
显示剩余4条评论

141

只需复制此文件:

c:/Program Files/Java/jre(5,6,7..any version)/bin/javaw.exe

转到Eclipse文件夹

*注意:仅在Windows上测试

替换Eclipse文件夹中的javaw.exe


我正在寻找一个像这个答案一样简单的解决方案,但它对我没有起作用。如果有人遇到类似的情况,修改eclipse.ini文件中的vm目录可能会有所帮助。链接 - Noha Kareem
3
对我没起作用,出现了错误:“打开注册表键 'Software\Javasoft\Java Runtime Environment'”。我不得不将整个jre7文件夹(在我的情况下)复制到Eclipse目录中,并将其重命名为jre。然后它就可以工作了。 - CuriousMarc
如果有人失败了,请尝试将jre文件夹复制到eclipse文件夹中。 - Arthur Zhixin Liu
@NohaKareem,你的建议对我来说最接近了。不幸的是,我的“jre”文件夹只包含“lib”,因此复制Java“jdk”文件夹(虽然更大,为350MB,但具有内部的“bin”文件夹)并将其重命名为“jre”起作用了。谢谢。 - Mindsect Team
安装了32位和64位Java,但是路径中只有32位Java,尝试打开64位的Eclipse会失败,将64位的javaw文件放在Eclipse旁边可以解决问题。 - DiamondDrake

83
关于设置JAVA_HOME的其他答案并不完全正确。 Eclipse实际上不会查看JAVA_HOME,请注意错误信息中提到的PATH
右键单击“我的电脑”并选择“属性”(或按Win键+Pause),转到“高级”选项卡,单击“环境变量”按钮,在底部的“系统变量”列表中选择Path(不是Classpath),单击“编辑”并在值的末尾添加;c:\path\to\jdk\bin
另外,您也可以添加JAVA_HOME环境变量,并在PATH中使用它。在同一个对话框中,点击“新建”,并将JAVA_HOME添加为c:\path\to\jdk的值。然后,您可以将;%JAVA_HOME%\bin添加到Path设置的值的末尾。

3
没起作用 :) 环境变量数据如下: 名称:Path --- 值:C:\Program Files (x86)\Java; C:\Program Files (x86)\Java\jdk1.6.0_14\bin - Wallter
1
路径中有空格的需要用引号括起来。 - BalusC
我的路径在之前被完美地配置好了,但Borland编译器编辑了路径字段并将Java路径替换为它自己的路径,现在已经修复了,谢谢! - Akhil Jain
1
@BalusC 实际上,在 Windows 上配置 PATH 环境变量时,无需将路径用引号括起来。只需使用分号 (;) 分隔即可。 - informatik01
这是解决问题的答案。经过几个小时的挖掘,对于那些有同样问题的人,你需要做到以下几点: 1)确保所有东西都是64位的。应该自动安装在“program files”,而不是“program files(x86)”中。 2)将-VM写入其他答案所在的bin文件夹。 3)按照这个人说的设置路径。如果无法从命令行运行java,则永远不会发生任何事情。 4)庆祝一下。 - triplebig

36

从控制面板打开Windows的系统属性,然后找到环境变量部分:

  • 添加一个JAVA_HOME条目,指向安装JDK的目录(例如C:\ Program Files \ Java \ jre6)
  • 找到Path条目,并在末尾添加以下内容; %JAVA_HOME%\ bin
  • 确认更改
  • 重新启动eclipse,以便它能够识别新环境

现在,大多数Java工具都可以通过使用JAVA_HOME环境变量或在Path环境变量中查找java.exe / javaw.exe来找到您的Java安装。


3
当我添加了以下内容: 名称:JAVA_HOME 值:"C:\Program Files (x86)\Java\jdk1.6.0_14;%JAVA_HOME%\bin" 我仍然得到相同的错误。 - Wallter

24
如果你下载的是64位版本的Eclipse,则会寻找64位版本的JRE。如果你下载的是32位版本的Eclipse,则会寻找32位版本的JRE。
我所做的是安装32位和64位版本的JRE。你可以从SUN Oracle网站获取它们。JAVA网站似乎会自动安装32位版本的Java。我想这可能是因为浏览器的原因。

2
正如ladookie所说,问题很可能是浏览器在Java网站上运行了错误的代码并获取了错误的JAVA版本... - Wallter
1
speedbaron在这里完全正确。如果您正在修改环境变量PATH,请确保将正确版本的路径放入其中。我的Windows 7 64位系统安装了32位的JRE(不知道为什么),所以我安装了64位的版本并将新目录添加到了PATH中。现在看起来运行得很好。 - laketuna
1
这是我的问题。请注意,Windows 将 64 位安装到 C:\Program Files\Java,将 32 位安装到 C:\Program Files (x86)\Java - styfle

10

事实证明,我所需要做的就是将 'path' 改为:

"C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem; C:\Program Files (x86)\Java; C:\Program Files (x86)\Java\jdk1.6.0_14\bin"

这就可以了 :)


1
顺便提一下,你应该使用jdk1.6.0_16或更高版本。如果使用jdk 1.6.0_14,在Eclipse中无法正确使用断点:https://bugs.eclipse.org/bugs/show_bug.cgi?id=279137 - Csaba_H

9

我使用的是Windows 7 64位操作系统,我在使用Eclipse时遇到了同样的问题。为了解决这个问题,我不得不使用Internet Explorer(64位版本)下载Java才行。这是安装64位版本Java的唯一方法。当我使用Firefox安装Java时,它自动安装了32位版本(太傻了!)。而Eclipse 64位版本将无法检测到32位版本的Java。


我不再有这个问题了 - 但这似乎是一个很好的解决方案并且很有道理 - 测试其他64位浏览器会很有趣... - Wallter

7

简要解决方案:

右键点击“我的电脑”,选择属性,然后选择“高级系统设置”,弹出“系统属性”窗口,在“高级”选项卡下,选择“环境变量”,弹出“环境变量”窗口,在“系统变量”部分中查找PATH变量,并编辑其值,将其(版本;jre6、jre7等)更改为您正在使用的jre,例如我的:C:\Program Files\Java\jre7\bin


7
不要依赖于Windows路径变量,因为它在几乎每次更新时都会改变。例如,在64位机器上运行的32位Chrome java更新会将系统范围内的64位JVM替换为32位JVM。注意,这个条目必须是eclipse.ini中的最后一个,否则它不起作用,并且 - 如先前所述 - eclipse.exe不会评估JAVA_HOME变量。
即使您已经配置了有效的JAVA_HOME和Path,也可能出现这个问题,所以最简单的方法是在您的eclipse安装文件夹中打开eclipse.ini。
-vm C:\ Program Files \ Java \ jdk1.7.0_71 \ bin \ javaw.exe 将C:\ Program Files \ Java \ jdk1.7.0_71 \ bin \ javaw.exe替换为您的jdk或jre的路径

我投票支持这个答案是正确的。不要依赖于Windows路径变量,因为它在几乎每次更新中都会更改。例如,在64位机器上的32位Chrome Java更新将系统范围的64位JVM替换为32位JVM。还请注意,此条目必须是eclipse.ini中的最后一个,否则它将无法工作。并且 - 如先前所述 - eclipse.exe不会评估JAVA_HOME变量。请相应地编辑您的答案。 - Heri
这是最佳答案,因为它直接解决了实际问题。Eclipse正在寻找特定参数的路径,而该值是错误的...因此更正该值可以解决问题。 - BuvinJ

6
不用担心,我也曾被这个错误和致命错误毁掉,当我遇到它时,我感到非常沮丧,甚至想放弃安卓编程,但我克服了它。首先,只需复制此代码并将其粘贴到系统变量路径下...

C:\Program Files;C:\Winnt;C:\Winnt\System32;C:\Program Files\Java\jre6\bin\javaw.exe

现在从你的路径中复制“jre”文件夹,就像我在这个路径下有“jre”一样。
            C:\Program Files\Java

将其复制并粘贴到您的Eclipse文件夹中,即Eclipse.exe文件所在的位置。例如,我的Eclipse设置位于此位置。
    F:\Softwares\LANGUAGES SOFTEARE\Android Setup\eclipse

在Eclipse文件夹中粘贴“jre”文件夹。如果您有“jre6”,则将其重命名为“jre”……运行Eclipse,您将得到解决方案。

   //<<<<<<<<<<<<<<----------------------------->>>>>>>>>>>>>>>>>>>                 

其他解决方案:2

如果以上步骤无法解决问题,请按照以下步骤操作:

  1. 从Java路径(例如C:\Program Files\Java\jre6*等)中复制文件夹“jre”,并将其粘贴到您的eclipse目录中(即您的eclipse可用的位置)。
  2. 打开eclipse.ini文件。
  3. 更改javaw.exe文件的目录,如下所示:

-vmF:\Softwares\LANGUAGES SOFTEARE\Android Setup\eclipse Indigo version 32 Bit\jre\bin/javaw.exe

现在,当您启动eclipse时,它会搜索javaw.exe,并在eclipse.ini中搜索路径,因为它现在位于相同的文件夹中,所以它将启动javaw.exe并开始工作。

如果您仍有任何疑问,请再次询问,只需转到我的个人资料并找到我的电子邮件地址。因为我热爱堆栈溢出论坛,它使我成为了一名程序员。*


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接