【问题标题】:Does JSP in Google AppEngine support JDK1.8Google AppEngine中的JSP是否支持JDK1.8
【发布时间】:2013-12-15 05:46:45
【问题描述】:

我在 Eclipse 中有一个应用引擎项目。我在 WAR 文件夹中保存了一个 JSP 文件。我已将安装的 jre 中的路径指定为 JDK1.8。现在,当我在 local 中运行项目时,JSP 文件在单击超链接后成功加载。部署到 Google App Engine 后相同的项目无法加载。它显示服务器错误

我认为可能的原因: 我读到了一些 Google AppEngine 现在支持 JAVA 7 的地方。因此,当我在本地编译 JDK1.8 中的 JSP 文件时,它运行良好。但是当我在云中部署项目时出现了问题。我认为,它无法编译 JSP 文件。

请建议我你的想法?是不是同一个原因?

【问题讨论】:

  • “请建议我您的想法?” 我认为如果 Google 使用高于用于公开发布的最新版本的任何 JRE 版本,那将是极其愚蠢的。所以如果他们支持 Java 8,我会惊讶
  • 我会说是的,因为只有 JDK1.8。正如文档所述,Google AppEngine 现在仅支持 JAVA 7。
  • 我非常惊讶地说为什么人们对我的问题投了反对票,而这对这个社区来说非常重要。无论如何感谢您的回答。你能告诉我它适用于哪个 JDK 版本吗?
  • 阅读“简介”下的第一行@developers.google.com/appengine/docs/java

标签: java google-app-engine jsp java-8


【解决方案1】:

根据可用的文档,“App Engine 使用 Java 7 JVM 在安全的“沙盒”环境中运行您的 Java Web 应用程序。”。因此,就运行时而言。目前它确实向后兼容 Java 6 应用程序。

但是,请记住,App Engine SDK 现在仅支持 Java 7。理想情况下,我不会使用仍在开发中的 JDK 8。

在幕后,当您将应用程序上传到 App Engine 时,他们会根据您链接的 SDK JAR 知道要使用哪个 Java 运行时。所以理想情况下,这是为您处理的。

所以,我仍然相信,尽管您在本地提供了 JDK 1.8,但 App Engine 版本的 JAR 足以让 Google 将您的应用程序部署在适当的 Java 7 JVM 中,如果它只是一个简单的 JSP您正在尝试链接。

由于您没有详细说明 JSP 的功能,因此最好知道这一点,因为这可以提供一些指导。此外,我建议您允许调试日志并访问管理控制台日志以了解发生了什么问题。这将为您提供更多详细信息。

【讨论】:

  • 日志显示 2013-11-28 11:00:39.448 EXCEPTION java.lang.IllegalArgumentException at com.google.appengine.runtime.Request.process(Request.java) at java.lang.ClassLoade E 2013-11-28 11:00:39.449 javax.servlet.ServletContext 日志:在 org.mortbay.jetty.servlet.Holder.doStart(Holder.java:79) 在 org. W 2013-11-28 11:00:39.450 上下文启动失败 2013-11-28 11:00:39.452 servlet javax.servlet.UnavailableException 未捕获异常:初始化失败。在 com.google.apphosting.runtime.jetty.AppVersionHandlerMa
  • 关于 JSP 我会说它是一个只有 HTML 表单的简单文件。没有 scriptlet 或任何服务器端代码。
  • 您是否在应用程序中使用任何其他第三方库 (JAR) 作为整体功能的一部分。某些 JAR、AppEngine SDK 版本和运行时之间似乎存在某种不兼容。虽然我无法确定确切的问题可能是什么。也许,您可以只放置一个由向导生成的简单的 hello world 并使用简单的 JSP 进行部署。这行得通还是也失败了?我只是想消除这里的东西。
【解决方案2】:

我确实遇到了这个问题;包括一个 JSP 文件,即使没有 Java 代码或任何内容,也会阻止我的 appengine 实例启动。

解决方案是确保您使用 1.7 VM 启动 Eclipse,即使您是针对 1.8 JDK 进行开发。因为我的 Eclipse 实例是在 1.8 VM 中运行的,所以生成的 JSP 文件与 AppEngine 不兼容。

您在 eclipse.ini 中更改主机 VM,如下所示:Google App Engine JSP can't deploy: java.lang.RuntimeException: Cannot get the System Java Compiler. Please use a JDK, not a JRE

【讨论】: