Google App Engine JSP 无法部署:java.lang.RuntimeException:无法获取系统 Java 编译器。请使用 JDK,而不是 JRE

Posted

技术标签:

【中文标题】Google App Engine JSP 无法部署:java.lang.RuntimeException:无法获取系统 Java 编译器。请使用 JDK,而不是 JRE【英文标题】:Google App Engine JSP can't deploy: java.lang.RuntimeException: Cannot get the System Java Compiler. Please use a JDK, not a JRE 【发布时间】:2012-12-06 00:21:22 【问题描述】:

希望这很简单,但是...除了部署到 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文件)

谢谢

link to image of my build path

【问题讨论】:

unable to deploy after upgrading to 1.7.4的可能重复 【参考方案1】:

我遇到了同样的问题,强制Eclipse使用后能够成功部署 我的 SDK 目录中的 JRE(Win 7 64 位)。要强制 Eclipse 使用特定的 JRE,请参阅 this。似乎 Eclipse 使用的 JVM、app 引擎产生的 JVM 以及 appconfig 使用的 JVM 都应该是相同的。希望这对您的情况也有帮助。

【讨论】:

谢谢!当我编辑 eclipse.ini 并将 eclipse 的 VM 设置为与 GAE 项目的构建路径相同的 jdk 时,错误消失了。 (C:\Program Files\Java\jdk1.7.0_02\bin\javaw.exe,在我的例子中,也是win7x64。) 哇,你的光剑! +1! 请注意,指定-vm参数时,必须是eclipse.ini文件的第一行。 -vm 参数在第一行,第二行包含 javaw.exe 文件的路径。 @mrmuggles 这不是真的。只要 -vm 参数高于 -vmargs 参数,就可以了。从发布的链接 AlohaCode:The -vm option must occur before the -vmargs option, since everything after -vmargs is passed directly to the JVM. TL;DR:编辑你的 eclipse.ini 。例如。在 Windows 7 下,将以下内容添加到 eclipse.ini:-vm,然后是换行符,然后是 C:\Program Files (x86)\Java\jdk1.7.0_07\bin\javaw.exe(是的,不要使用引号,是的,编辑路径以适合您的实际安装位​​置)。 ...如果您的 eclipse.ini 包含 -vmargs 内容,请确保所有 -vm 内容首先出现,然后是所有 -vmargs 内容。【参考方案2】:

根据 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

【讨论】:

在哪里可以找到类路径? 在 windows 10 上:控制面板\系统和安全\系统 -> 高级系统设置 -> 高级 -> 环境变量。然后寻找名为“path”的系统变量 这对我有用!我需要将“%JAVA_HOME%/bin”移动到 PATH 条目的头部。【参考方案3】:

在 Eclipse 中,转到:Window->Preferences->Java->Installed JREs ,添加->Standard VM TO JDK PATH\JRE。如果您之前检查过 JRE,请取消选中并检查此 jre

【讨论】:

在更新JAVA_HOMEPATHeclipse.ini 后,没有任何运气,这终于对我有用。但我也不得不更新项目以使用JDK jre:Configure Build Path... > Libraries > Add Library > JRE System Library > Workspace default JRE (jdk1.8.xxx),然后从Libraries中删除前一个列表。【参考方案4】:

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

-vm

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

【讨论】:

【参考方案5】:

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

【讨论】:

【参考方案6】:

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

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

【讨论】:

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

以上是关于Google App Engine JSP 无法部署:java.lang.RuntimeException:无法获取系统 Java 编译器。请使用 JDK,而不是 JRE的主要内容,如果未能解决你的问题,请参考以下文章

将 JSP 与 Google App Engine 结合使用时出现空白页

Google App Engine 上的 Production App 突然无法访问 Google Cloud Storage

Google App Engine 应用无法访问 Google Cloud Storage 存储分区

带有Firebase的Google App Engine-无法添加依赖项

Google App Engine 云存储客户端无法安装

使用 Google App Engine 时无法导入 Flask