无法运行Eclipse;JVM终止。退出代码=13

332

在此输入图像描述

我只是在eclipse.ini中追加了以下内容:

-vm C:\Program Files\Java\jre6\bin\javaw.exe

然后我尝试重新启动eclipse,结果出现了这个错误。请告诉我如何解决或提供真正解决该问题的链接。

这是我的eclipse.ini文件。

-startup 
plugins/org.eclipse.equinox.launcher_1.1.0.v20100507.jar
 --launcher.library
 plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.1.R36x_v20100810 
-showsplash
 org.eclipse.platform
--launcher.XXMaxPermSize 256m 
--launcher.defaultAction 
openFile 
-vm 
C:\Program Files\Java\jre6\bin\javaw.exe
-vmargs 
-Xms40m 
-Xmx384m

谢谢


3
这篇文章(https://dev59.com/rWkw5IYBdhLWcg3wzdtF#9636283)对我很有帮助。 - Vikram
12
如果您从Java 7升级到Java 8(1.8.0 u25或更高版本)后,Eclipse停止工作,那么可能是因为您的Eclipse是64位的,需要64位版本的JRE。有关更多详细信息,请参见这个问题 - ADTC
我的情况是我卸载了旧版本的JDK,但Eclipse仍然在尝试找到它。 - sophia
自从2008年以来,我一直在我的Windows PC上安装Eclipse,但第一次运行时从未遇到过错误代码13。你会认为这个问题现在应该已经解决了。 - Andrew S
2
可能是重复的问题:无法启动Eclipse - Java已启动但返回退出代码=13 - durron597
如果有人遇到问题,请查看此解决方案。它来自其他解决方案,对我很有帮助 https://dev59.com/B0jSa4cB1Zd3GeqPDCgV#47948092 - Roman Soviak
34个回答

180

当我试图配置eclipse.ini以使用JRE6时,我遇到了相同的错误。结果发现,我是通过错误地配置64位JVM来运行32位版本的eclipse 3.7而导致此错误。

正确配置需要在eclipse.ini中使用"-vm"参数时使用"C:/Program Files (x86)/"而不是"C:/Program Files/"。

请确保你使用的JVM版本(32/64位)与eclipse版本(32/64位)匹配。


5
对我来说,最新版的Eclipse也遇到了同样的问题。 如果您想使用64位Java,则需要安装64位Eclipse。 - Konstantin Petrukhnov
2
是的,那就是我的问题。我下载了32位的JDK。我是Java新手。非常感谢。 - live-love
1
我现在感觉真的很愚蠢,下载了64位的eclipse和jdk,但仍然试图指定为x86.... 至少我不是一个人 xD - AmazingDreams
2
@prince-ofthief 如果您能将此答案标记为已接受的答案,那将非常好,因为这是您遇到问题的真正原因,而将一个更差的答案标记为已接受的答案有点误导。谢谢! - Clint Eastwood
3
我正在使用32位的Eclipse来运行64位的JVM。 - Justin Skiles
1
这帮助我解决了安装新软件后Eclipse无法启动的问题。由于某种原因,它回退到使用32位JRE,而我正在运行64位的Eclipse。值得注意的是,获得30个赞的被接受的答案并没有起到任何帮助。+1 - TLP

133

可能是因为错误显示的方式不同(而不是在eclipse.ini文件中的书写方式),但在Eclipse.ini(指定JVM)中有以下文字:

  • -vm选项及其值(路径)必须放在不同的行上。
  • 值必须是Java可执行文件的完整绝对路径,而不仅仅是Java主目录的路径。
  • -vm选项必须在-vmargs选项之前出现,因为-vmargs之后的所有内容都直接传递给JVM。

5
-vm C:\Program Files\Java\jre6\bin\javaw.exe -startup plugins/org.eclipse.equinox.launcher_1.1.0.v20100507.jar --launcher.library plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.1.R36x_v20100810 -showsplash org.eclipse.platform --launcher.XXMaxPermSize 256m --launcher.defaultAction openFile -vmargs -Xms40m -Xmx384m这段文本是关于一个程序启动时用到的命令行参数,其中包含了虚拟机的相关设置以及程序的启动位置和资源库等信息。 - Prince OfThief
1
你可以尝试将这两行新的VM代码放在-vmargs语句之前,而不是在开头处。 - mecsco
11
好的,我解决了。我只是重新安装了64位的JDK,重新提取了Eclipse-64位,并再次编辑了eclipse.ini文件。 - Prince OfThief
3
安装了 JDK 7,然后升级到了 8,在运行 Windows 7 系统时,ini 文件不起作用,直到我使用了这个格式: -vm C:/Program Files/Java/jdk1.7.0_71/bin 不需要引号。不确定是否需要斜杠。 - Nick
Oracle默认给了我32位的Java。> . < - Grault
显示剩余3条评论

35

请看信息框的第二行。您可以看到实际上启动了哪个Java运行时。我的突然变成了C:\ ProgramData \ Oracle \ Java \ javapath \ javaw.exe。这发生在我安装了“Chrome Java更新程序”(Chrome浏览器抱怨:“您的Java已过期,您必须更新……”)之后。

在此“Chrome Java更新”之前,我的eclipse(luna jee x64)无错误启动。仔细观察后面的背景,我发现以下内容:Chrome Java更新程序(Notabene从Oracle网站启动)将C:\ ProgramData \ Oracle \ Java \ javapath添加到环境变量PATH的前面。它包含三个符号链接到(x86)程序文件夹中最新的Java 8 JRE安装->因此是32位的Java JRE。 Oracle使用Java8替换了旧技术,在system32(64位)和SysWOW64(32位)中具有符号链接。

与此同时,我学到了。无论您执行了哪个Java安装程序(*.exe),Windows都会记住该Java版本(32位或64位),结果在更新后,C:\ ProgramData \ Oracle \ Java \ javapath中的链接将指向记忆版本的Java安装。如果您有一个64位的eclipse安装并遇到上述错误:只需重新安装最新的64位JDK即可。之后,Java更新将不再链接到32位版本。而64位的eclipse将在没有eclipse.ini条目的情况下正确启动。


2
谢谢你找出了这个问题。修复的正确方法是什么?我应该更新环境变量并清理这个链接吗? - plus-
我删除了PATH环境变量中的新条目,并在eclipse.ini中添加了一个-vm条目,该条目指向64位SDK。但我怀疑删除PATH条目是否是正确的方法。在下一次更新中,它可能会再次出现。我针对这个问题提了自己的问题(http://stackoverflow.com/questions/26502059/why-does-chrome-java-updater-installs-a-global-32bit-jre-on-a-64bit-machine?noredirect=1#comment41638420_26502059) - Heri
1
昨天又发生了我担心的事情:在Chrome启动的Java更新后,我的SpringToolSuite再次出现了无法启动的错误(STS是新安装的,尚未在ini文件中添加-vm参数)。 - Heri
7
从PATH环境变量中删除了c:\ProgramData\Oracle\Java\javapath,现在它可以工作了!谢谢! - skoperst
将路径变量更新为使用%JAVA_HOME%\bin,并更正设置%JAVA_HOME%以解决问题。事情一开始是正常的,但某些东西(某个更新)破坏了它们。 - Nitb
@Heri,我的做法是改变了环境变量的顺序:我将 ...\Oracle\Java\javapath 条目移到最后,然后它就可以工作了!希望下一个 Chrome 更新不会再次干扰它。 - Andrea Dusza

33

您需要检查计算机的操作系统是64位还是32位,同样适用于JDK(64位/32位)和Eclipse(64位/32位)。

确保它们全部相同;如果不是,则需要下载与您的位数匹配的版本。


谢谢!在尝试安装Google的Dart编辑器(64位)时遇到了错误。我只需要更改.ini文件以引用64位Java版本,然后它就可以工作了。 - Lucius
5
这并不完全正确。在64位Windows上,32位的JDK / Eclipse组合也能够良好地工作。 - marsbear
这就是解决我的问题的方法(再次)。实际上,在更新了Java并遇到相同问题后,我一直在寻找这个答案。最终我意识到,我使用的默认浏览器是32位版本的Firefox,因此当Java自动下载时,它为我猜测我需要32位版本,我选择了该安装位置作为我的.ini文件。 - Jon B

22

对于Eclipse:

在eclipse.ini中添加这两行:

-vm

C:\Program Files\Java\jdk1.7.0_60\bin\javaw.exe

第二行表示javaw.exe文件的JDK位置。

注意:将-vm行放置在-vmargs之前,否则会采用默认位置。

对于STS:

在STS.ini中按照上述更改。


17
我也遇到了这个问题。后来发现,至少对于我而言,这是由于尝试在win32的Eclipse中使用win64版本的JRE引起的。似乎win32 Eclipse需要win32 Java。(在Oracle/Sun的Java安装程序列表中称为-586)。
我同时使用两者的原因是我想找出一个仅在64位Eclipse中表现出现的错误,所以我需要一个32位来进行比较。
一旦我在机器上都安装了“x64”(win64)和“i586”(win32)版本的JRE,事情就正常工作了,没有出现错误13。你显然可以同时安装两个版本。

同样的问题我也遇到了。我试图在Win64电脑上使用64位Eclipse,但是我猜测我安装的是32位Java。无论如何,我切换到了32位的Eclipse,现在一切都正常了。 - Raw_Input
我也看到了这个问题。值得注意的是,邪恶的安装程序在没有任何提示的情况下,在win64上安装了32位Java。 - XTL

14

1
我该如何知道兼容的版本? - Prince OfThief
9
那个网站真的没有说太多的内容。 - jakobengblom2
不得不更新Java以运行一些JavaWS应用程序...它安装了32位JRE,但eclipse需要JDK版本...安装64位JDK并更新我的PATH以引用该版本后,问题解决了。 - Micho Rizo

6

请确保您使用的Eclipse和Java都是32位或64位。

您不能使用32位JRE运行64位Eclipse。

java -version

Java HotSpot(TM) 64位 服务器虚拟机

32位版本的JRE中不包含64位。


在“readme”文件或错误消息中没有提到这一点。这对于评估Eclipse是否适合使用的人并不会产生任何信心。 - David Spector

4

我之前遇到了同样的问题,花费了大约一个小时来解决这个问题。最终发现路径中有一个#字符导致问题出现。

所以我将"C:\# IDE\eclipse 3.7\"重命名为"C:\+ IDE\eclipse 3.7\",问题得以解决。


4
最近我面临了同样的问题。我的eclipse版本不支持java8。我意外地在我的电脑上安装了jre 8,这自动更新了我的PATH变量,并在开头添加了"C:\ ProgramData \ Oracle \ Java \ javapath",导致eclipse选择了该版本(并忽略之后手动添加的1.6版本),并崩溃退出,错误代码为13。我只需从路径中删除此字符串,系统就会选择我的旧版本,eclipse就可以正常启动了。

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