谷歌应用引擎无法部署JSP:java.lang.RuntimeException: 无法获取系统Java编译器。请使用JDK而不是JRE。

33

希望这个问题很简单,但是……除了部署到GAE之外,Eclipse一直表现良好。

我可以在本地运行我的GAE应用程序,但是当我尝试将其部署到Google时,我会收到以下消息:

java.lang.RuntimeException: Cannot get the System Java Compiler. Please use a JDK, not a JRE.

我已将构建路径设置为JDK。

尝试从多个系统(win7和win8)部署同一项目时也会发生此问题,因此我怀疑问题与项目本身有关。该特定项目已经在谷歌上运行了多年。

有趣的是,只有当我的应用程序中有 .jsp 文件要部署时才会出现此错误。如果我删除 jsp 文件,则可以无错误地进行部署。(虽然我需要 jsp 文件)

谢谢

链接到我的构建路径图像


1
可能是升级到1.7.4后无法部署的重复问题。 - durron597
6个回答

60

我也遇到了同样的问题,并成功地部署了应用程序,方法是强制Eclipse使用我的SDK目录中的JRE(Win 7 64位)。要强制Eclipse使用特定的JRE,请参见此处。似乎Eclipse使用的JVM、App Engine生成的JVM和appconfig使用的JVM应该都相同。希望这也能对你的情况有所帮助。


2
谢谢!当我编辑了eclipse.ini文件并将eclipse的虚拟机设置为与GAE项目的构建路径相同的jdk时,错误消失了。(在我的情况下是C:\Program Files\Java\jdk1.7.0_02\bin\javaw.exe,也是win7x64。) - 101chris
2
请注意,在指定 -vm 参数时,它需要是 eclipse.ini 文件的第一行。-vm 参数在第一行,第二行包含 javaw.exe 文件的路径。 - mrmuggles
2
@mrmuggles那不是真的。只要-vm参数在-vmargs参数之前,你就可以了。从AlohaCode发布的链接中可以看到:“-vm选项必须出现在-vmargs选项之前,因为-vmargs之后的所有内容都会直接传递给JVM。” - Mark Tielemans
3
简化版:编辑eclipse.ini文件,将以下内容添加到其中:-vm和换行符,然后是C:\Program Files (x86)\Java\jdk1.7.0_07\bin\javaw.exe(不要使用引号,并根据实际安装位置编辑路径)。如果您的eclipse.ini包含-vmargs,请确保所有-vm在前面,然后是所有-vmargs - Abdull
只是想确认这仍然是一个问题,并且上述解决方案对我有效。 - Yogi
显示剩余2条评论

12
我尝试按照AlohaCode的答案将项目JRE设置为与我的Eclipse JRE相同,但这对我来说还不够。答案在我的类路径中,在C:\windows\system32中有java.exe,而这个路径在我的Java Home变量之前。解决方法是将Java Home路径放在C:\windows\system32条目之前。我在这里找到了答案:2FL5sJ">https://groups.google.com/forum/?fromgroups=#!msg/google-appengine-java/RyFybJWUhU4/78UE_2FL5sJ

一个人在哪里找到classpath? - Yster
在Windows 10上:控制面板\系统和安全\系统->高级系统设置->高级->环境变量。然后查找名为“path”的系统变量。 - bitrock
这对我有效!我需要将“%JAVA_HOME%/bin”移动到PATH条目的开头。 - alextc

2
在Eclipse中,转到:Window->Preferences->Java->Installed JREs,添加->Standard VM TO JDK PATH \ JRE。如果您之前已经勾选了一个JRE,请取消勾选并选择此JRE。

1
在更新了JAVA_HOMEPATHeclipse.ini后仍然不行,这个方法最终解决了我的问题。但我还需要更新项目以使用JDK jre: 配置构建路径... > 库 > 添加库 > JRE 系统库 > 工作区默认 JRE (jdk1.8.xxx),然后从库列表中删除前一个库。 - Tyler C.

2
给出的建议解决了我的问题。 -vm 参数不能是第一行。
-vm

C:\Program Files (x86)\Java\jdk1.7.0_51\bin\javaw.exe

0
在eclipse.ini中设置-vm没有帮助。所有其他设置似乎都指向JDK。出于绝望,我卸载了系统中的所有JRE,只留下了JDK。结果是Eclipse无法启动,因为JDK bin目录不在我的PATH上(这里是Windows 8)。将其添加到环境系统变量中后,Eclipse就可以启动了。此后,我就可以部署到应用程序引擎了。

-2

在我的C:/Program Files(*86)/Java文件夹中删除JRE文件,重新打开Eclipse IDE即可解决问题。

我之前安装了Java JDK在C:/Program Files/Java文件夹中,但未被检测到。


这不是最佳解决方案,因为它可能会对其他应用程序产生连锁反应。 - Caleryn

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