无法获取系统Java编译器。请使用JDK而不是JRE。

33

在将我的项目部署到Google应用引擎时,如果jsp文件在其中,则会出现“无法获取系统Java编译器。 请使用JDK而不是JRE。”的错误提示。因此,我尝试以下方法来解决问题:

  1. 将 -vm C:\Program Files\Java\jdk1.6.0_43\bin\javaw.exe 添加到我的eclipse.ini文件中。
  2. 确保JDK在我的项目的构建路径中,而不是JRE。
  3. 将 C:\Program Files\Java\jdk1.6.0_43\bin\ 添加到环境变量的PATH中。

但是这些方法都没有解决问题。我该怎么办?


你尝试过重新安装Eclipse和JDK吗? - user1131435
14个回答

35
在编辑eclipse.ini文件时,添加-vm C:\Program Files\Java\jdk1.6.0_43\bin\javaw.exe时,请确保将-vmC:\Program Files\Java\jdk1.6.0_43\bin\javaw.exe放在不同的行上。

我还要补充一点,我的Eclipse出了些问题。 我已经尝试过这个方法,但是没有起作用。 然后我安装了一个新的Eclipse,结果还是不行。 最后我又安装了一个新的Eclipse,并将工作区指向其他文件夹,这个方法奏效了!如果有人遇到同样奇怪的问题,这是一个小技巧。 - InsaurraldeAP
对我有用,谢谢。 - Muhammad Ummar

30

以下两点对我有用:

1)确保您的JAVA_HOME路径设置为JDK并在PATH中包含JAVA_HOME。

2)将以下代码的前两行添加到eclipse.ini中。它应该像下面这样。

-vm
C:\Program Files\Java\jdk1.7.0_03\bin\javaw.exe
-startup
plugins/org.eclipse.equinox.launcher_1.3.0.v20130327-1440.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.200.v20130807-1835-product
org.eclipse.epp.package.standard.product
--launcher.defaultAction
openFile
--launcher.XXMaxPermSize
256M
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
--launcher.appendVmargs
-vmargs
-Dosgi.requiredJavaVersion=1.6
-Xms40m
-Xmx512m

15

你能将你的eclipse.ini文件复制粘贴在这里吗? 几天前我添加了vm行,它正常工作。

只需记住将其放置在-vmargs行之前...


5

我有同样的问题并得出了结论:

如果Eclipse使用JRE执行,则在部署到App Engine时,即使“偏好设置”设置为使用JDK,它也会使用JRE。

解决方案:将JAVA_HOME路径从JRE更改为JDK,并确保在PATH中包括JAVA_HOME \ bin。然后,重新启动Eclipse。


4
我通过编辑Google App Engine SDK文件夹下的appcfg.cmd文件来解决这个问题。
appcfg.cmd文件位于:
{eclipse directory}\plugins\com.google.appengine.eclipse.sdkbundle_1.8.8\appengine-java-sdk-1.8.8\bin
将命令中的java字符串更改为jdk文件夹下java.exe的具体位置:
原始命令:
java -Xmx1100m -cp "%~dp0..\lib\appengine-tools-api.jar" com.google.appengine.tools.admin.AppCfg %*
更改后的命令:
"C:\Program Files\Java\jdk1.7.0_45\bin\java.exe" -Xmx1100m -cp "%~dp0..\lib\appengine-tools-api.jar" com.google.appengine.tools.admin.AppCfg %*

谢谢!帮了我很多忙! - shimatai

3

在上传示例war guestbook时,我遇到了相同的错误["无法获取系统java编译器"]。 我已经安装了JDK,并且“java-version”可以正确打印版本信息。 那么哪个部分出了问题?
问题的原因在于:

除了%JAVA_HOME%/bin目录之外,java.exe / javaw.exe还存在于C:\ Windows \子目录中。

上传命令使用c:\ windows \子目录中的java.exe而不是位于%JAVA_HOME%目录中的java.exe。
解决方案:
将“%JAVA_HOME%/ bin”放在PATH环境变量定义的开头。 这应该保证使用%JAVA_HOME%的内容。


这也可以,不确定处理这个问题的正确方式是什么……是这样还是编辑eclipse.ini文件? - xtrahelp.com
将其放在PATH环境的开头是必要的。对我来说,不需要更改eclipse.ini。 - Andrew-NZ

2
  1. 编辑eclipse.ini文件并添加以下内容:

    -vm C:\Program Files\Java\jdk1.7.0_65\bin\javaw.exe

    将上述内容添加到下面的这些行之间:

    --launcher.defaultAction openFile -vm C:\Program Files\Java\jdk1.7.0_65\bin\javaw.exe --launcher.appendVmargs

  2. 设置你的JAVA_HOME指向jdk文件夹 (C:\Program Files\Java\jdk1.7.0_65)

对我而言,这个方法非常有效。


完美地适用于我的Eclipse。 - Jeff Chung

1
最后的方法:一个简单但是不太优雅的解决方案是卸载所有JRE。

我尝试了许多不同的解决方案,但最终选择了这个。这是唯一有效的答案。我只是将“jre7”目录移动到其他地方(以防需要恢复它)。 - Brian White
卸载对我没有起作用。我使用了eclipse.ini调整并在libraries中安装了JRE。虽然在Project Explorer guestbook.jsp中有一个红色的叉号,但它在本地和远程上都运行得像魔鬼一样。Google的家伙们太疯狂了。 - Timo

0

前往 Windows -> 首选项 -> Java -> 已安装的 JRE -> 添加...,然后将路径设置为 JDK 文件夹的 JRE home。其余字段将自动填充。然后,在列表 已安装的 JRE 中确保新添加的 JDK 被标记为默认值。


0

请确保您的JAVA_HOME环境变量指向JDK主目录,而不是JRE。


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