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_HOME
、PATH
和eclipse.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 存储分区