m2eclipse: Eclipse 正在使用 JRE 运行,但需要 JDK

41

我使用m2eclipse(0.10.0)和eclipse galileo(Build id: 20090920-1017)时遇到了问题。

我一直收到以下错误消息:"Eclipse is running in a JRE, but a JDK is required"。我尝试了几种方法,但都没有成功。这里是我尝试过的方法:

  • 在“Window > Preferences > Java > Installed JREs”中,我勾选了JDK1.6.0_20。不起作用。

  • 在“Window > Preferences > Java > Installed JREs”中,我删除了所有JREs,只留下了已勾选的JDK1.6.0_20。不起作用。

  • 在“Window > Preferences > Java > Installed JREs > Execution Environments”中,我选择了JavaSE-1.6,并勾选了JDK1.6.0_20 [perfect match]。不起作用。

  • 在eclipse桌面启动图标的首选项中,我添加了-vm参数(C:\Programme\eclipse_galileo\eclipse\eclipse.exe -vm C:\Programme\Java\jdk1.6.0_20\bin)。不起作用。

  • 我添加了clean参数(C:\Programme\eclipse_galileo\eclipse\eclipse.exe -vm C:\Programme\Java\jdk1.6.0_20\bin -clean)。不起作用。

  • 我在eclipse.ini文件中添加了-vm参数,并在其后使用回车,然后在新行中放置C:/Programme/Java/jdk1.6.0_20/bin/javaw.exe。不起作用。

  • 尝试完所有这些方法之后,我卸载并重新安装了m2eclipse插件。不起作用。

我尝试的新思路:

  • 在eclipse桌面启动图标的首选项中,我将可执行文件放在末尾(C:\Programme\eclipse_galileo\eclipse\eclipse.exe -vm C:\Programme\Java\jdk1.6.0_20\bin\javaw.exe)。不起作用。

  • 我更改了eclipse.ini中的反斜杠为正斜杠。不起作用。

这是我的eclipse.ini文件内容:

-startup
plugins/org.eclipse.equinox.launcher_1.0.201.R35x_v20090715.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.0.200.v20090519
-product
org.eclipse.epp.package.jee.product
--launcher.XXMaxPermSize
256M
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
-vm
C:\Programme\Java\jdk1.6.0_20\bin\javaw.exe
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms40m
-Xmx512m

有没有其他人有不同的想法?任何帮助都会受到赞赏。

非常感谢。 GernoK


1
参见 https://dev59.com/1XVC5IYBdhLWcg3w7V33#1409590,这里有一个 eclipse.ini 格式的具体例子。 - VonC
如果您想提供更多细节或澄清,请编辑您的问题。 - Tim Post
敬启者:我曾经也遇到过完全相同的问题,直到我升级到Indigo版本后,问题迎刃而解! - s.d
15个回答

26

难以置信,这个问题的解决与斜杠、反斜杠、引号、空格、jre、jdk、jvm、javaw等都无关。

答案是在-path和路径之间必须要有换行。

所以在eclipse.ini文件中:

以下设置将不起作用:

-vm C:\java\jdk\bin\javaw.exe
但是这样会:
-vm
C:\java\jdk\bin\javaw.exe

是的,但你还需要注意-vm的位置,必须在-vmargs之后。请查看我上面的答案以获取完整的解释。 - Daniel Baktiar

13

MARIO-ORTEGON给出了正确的解决方案。您需要做的唯一一件事就是将这一行“-vm C:\java\jdk\bin\javaw.exe”移至eclipse.ini文件中 -product org.eclipse.epp.package.jee.product的部分下面,格式如下:

-product
org.eclipse.epp.package.jee.product
-vm
C:\java\jdk\bin\javaw.exe

保存并重新启动Eclipse,错误就会消失。


11

我认为编辑 eclipse.iniSTS.ini 文件时需要注意以下答案:

很多人犯这些错误是因为他们做了一些假设(这是不正确的):

  1. 错误#1:在同一行上写入参数。与JVM命令行不同,Eclipse希望在其eclipse.ini文件中将每个参数放置在不同的行中。 最常见的错误之一是(应写在2个单独的行中):

    -vm c:/Java/jdk1.6.0_31/bin/javaw.exe

  2. 错误#2:以错误的顺序编写-vm和-vmargs。顺序确实很重要。-vmargs必须放在-vm之前。为什么?因为一旦指定了-vm,VM就会完全指定,其余的-vmargs将被忽略。

  3. 错误#3:假设如果您不更改,则eclipse.ini将保持不变。某些插件安装可能具有自动配置(重新启动后会自动更改eclipse.ini文件或其他.ini配置文件,例如,如果您使用SpringSource Tool Suite,则会更改STS.ini),它们将在-vmargs之前 indiscriminately附加-vm。检查-vm-vmargs的双重出现。

  4. 错误#4:指向JVM路径,而不是指定-vm时的二进制文件。Eclipse期望Java JVM二进制文件,而不仅仅是JAVA_HOME路径,例如 -vm c:/Java/jdk1.6.0_31/bin/javaw.exe 而不仅仅是 -vm c:/Java/jdk1.6.0_31

对于原始问题,似乎错误#2是原因。您应该将-vm移动到-vmargs之后的最后一个位置。

-startup
plugins/org.eclipse.equinox.launcher_1.0.201.R35x_v20090715.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.0.200.v20090519
-product
org.eclipse.epp.package.jee.product
--launcher.XXMaxPermSize
256M
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms40m
-Xmx512m
-vm
C:\Programme\Java\jdk1.6.0_20\bin\javaw.exe

3
实际上,如果我在-vmargs之后加上-vm参数,它会被-vmargs覆盖,这可以通过查看运行时配置来看到。只有在我在-product之后使用-vm才有效。使用Eclipse Helios。 - eis
2
如果在“-vmargs”选项之后使用“-vm”选项,则无法初始化Kepler VM。 - Gab

4
我在使用Eclipse时遇到了同样的问题,它报告正在JRE中运行(Win7 x64,32位JDK 1.6更新21),尽管我指定它应该使用JDK。
最终我删除了可与JDK一起安装的JRE6,然后消息就消失了。
一个更深入了解Windows的人将不得不解释为什么会出现这种情况,但很明显它忽略了eclipse.ini的设置,以及JAVA_HOME,并且仍然在JRE中启动eclipse。 我的eclipse.ini:
-vm
C:/Java/jdk1.6.0_21/bin/javaw.exe
-startup
plugins/org.eclipse.equinox.launcher_1.0.201.R35x_v20090715.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.0.200.v20090519
-product
org.eclipse.epp.package.jee.product
-nosplash
org.eclipse.platform
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms32m
-Xmx1024m
-Xss6m
-XX:PermSize=32m
-XX:MaxPermSize=256m
-XX:CompileThreshold=5
-XX:MaxGCPauseMillis=10
-XX:MaxHeapFreeRatio=70
-XX:+UseParallelGC
-XX:+AggressiveOpts
-Dcom.sun.management.jmxremote

JAVA_HOME

C:\Windows\system32>echo %JAVA_HOME%
C:\Java\jdk1.6.0_21

2

请将以下几行代码放在eclipse.ini文件的开头:

-vm
G:/dev/jdk1.6.0_19/bin/javaw.exe

2
我认为您需要将可执行文件明确添加到“-vm”参数中:

我认为您需要将可执行文件明确添加到“-vm”参数中:

C:\Programme\eclipse_galileo\eclipse\eclipse.exe -vm C:\Programme\Java\jdk1.6.0_20\bin\javaw

关于ini文件,它取决于完整的内容。你的ini文件包含了什么?

谢谢,你的第一个想法不起作用,我已经将ini内容添加到我的问题中。 - GernoK

1

一旦我删除这两行代码,我就会得到相同的错误信息。

-vm
C:\Programme\Java\jdk1.6.0_10\bin\javaw.exe

从我的eclipse.ini文件中看来,也许你应该在那个eclipse.ini文件中使用反斜杠。

1
应该可以工作。你检查过Eclipse是否在JDK上运行了吗?你可以在Help->About Eclipse->Installation Details->Configuration中进行此操作,那里有几个条目提示使用的Java版本(例如eclipse.vmsun.boot.class.path)。 如果Eclipse确实使用了JDK,那么你的问题可能是m2eclipse插件中的错误。 - Turismo
我不认为这还是一个问题,但我在做某事时想起了这个。小提示:使用类似 System Explorer 的工具来了解 Eclipse 使用的 javaw.exe。 - xor_eq

0
这里涉及到两个JVM;一个是Eclipse正在运行的JVM,另一个(或多个)是工作区中不同项目所运行的JVM。我认为这条消息指的是Eclipse正在运行的JVM。因此,解决方案不包含在Eclipse的“已安装JRE”部分中。而是在Windows路径中的JVM。

我已经编辑了环境变量(Path和JAVA_HOME)- 但没有任何改变。错误信息仍然存在。 - user352084

0

Java 可能正在使用 JAVA_HOME 环境变量查找其文件。尝试将其更改为 C:\Programme\Java\jdk1.6.0_20

在 Windows XP 中,这位于控制面板、系统、高级选项卡、环境变量按钮下。


0

卸载方法是唯一对我有效的方法。除非我只安装了JDK,否则无论多少次尝试使用-vm命令都无法实现。


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