GAE 500服务器错误

i3w*_*gyi 14 google-app-engine gae-eclipse-plugin google-cloud-datastore

我正在开发GAE上的应用程序,我在本地测试网站很好,但每次我尝试将它部署到GAE时报告错误:服务器错误

The server encountered an error and could not complete your request.
Please try again in 30 seconds. 
Run Code Online (Sandbox Code Playgroud)

我在谷歌搜索了很多,似乎没有答案可以解决我的问题.当我在GAE应用程序中查找日志时,以下是我到目前为止发现的主要问题.最初,我认为这是由JDK8引起的,但是当我设置JDK8时,我甚至无法在本地运行应用程序!

    Uncaught exception from servlet
java.lang.UnsupportedClassVersionError: org/apache/jsp/index_jsp : Unsupported major.minor version 52.0
    at com.google.appengine.runtime.Request.process-aea5c804a9f29902(Request.java)
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:795)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
    at sun.reflect.GeneratedMethodAccessor5.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:360)
    at org.mortbay.util.Loader.loadClass(Loader.java:91)
    at org.mortbay.util.Loader.loadClass(Loader.java:71)
    at org.mortbay.jetty.servlet.Holder.doStart(Holder.java:73)
    at org.mortbay.jetty.servlet.ServletHolder.doStart(ServletHolder.java:242)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:685)
    at org.mortbay.jetty.servlet.Context.startContext(Context.java:140)
    at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1250)
    at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:517)
    at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:467)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at com.google.tracing.TraceContext$TraceContextRunnable.runInContext(TraceContext.java:437)
    at com.google.tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.java:444)
    at com.google.tracing.CurrentContext.runInContext(CurrentContext.java:188)
    at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:308)
    at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:300)
    at com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:441)
    at java.lang.Thread.run(Thread.java:724)
Run Code Online (Sandbox Code Playgroud)

Pet*_*ego 17

这就是说明:Unsupported major.minor version 52.0.当您在更高版本的JDK(52 = java8)上编译然后在较低的JRE版本(GAE使用java7)上执行它时会发生这种情况.

GAE尚不支持Java8,因此您应该在Java7下编译.

  • 我有同样的问题,甚至所有设置都表明Java 7,GAE部署以某种方式使用Java 8编译JSP文件(如果存在于OSX中).还检查了tmp目录中生成的文件,所有Java类都正确51.0,但JSP类是52.0.还有什么想法? (3认同)
  • 有完全相同的问题,其中所有设置都设置为Java 7,但eclipse使用Java 8作为JSP文件.只有解决方案我发现有效的方法是从我的系统中删除Java 8 (3认同)

cra*_*s84 8

安装Java 8时,我在Windows上遇到了同样的问题.

我尝试修改项目/工作区设置,但它没有帮助我.

因此,我创建了以下批处理文件作为GAE项目的解决方法:

eclipse_gae.bat:

SET JAVA_HOME="C:\Program Files\Java\jdk1.7.0_55"
SET PATH="%JAVA_HOME%\bin"
START eclipse.exe
Run Code Online (Sandbox Code Playgroud)


ico*_*oba 5

没有必要从MacOS中完全删除Java 8.只需重新配置Eclipse,如图所示,强制它将Java编译为Java 7:http: //java.wildstartech.com/Java-Platform-Standard-Edition/mac-os-x-java-development/how-to-configure-蚀到运行用的Java -7-时的Java -8-被安装