谷歌应用引擎返回错误日志:不支持的 major.minor 版本 51.0。

9

我刚刚构建了一个样例应用程序来测试Google App Engine和Google Web Toolkit特性,使用RPC服务和基于JDO的Google App Engine。该服务在本地工作正常。但是,当我将其部署到GAE并运行时,它显示出与标题相同的错误。 我使用JRE7来编译应用程序。 以下是我的错误日志:

Uncaught exception from servlet
java.lang.UnsupportedClassVersionError: com/gwt/myexample/server/EmployeeServiceImpl:
Unsupported major.minor version 51.0
at com.google.appengine.runtime.Request.process-e8c21a25e91f709f(Request.java)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:634)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:277)
at sun.reflect.GeneratedMethodAccessor5.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke
   (DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
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:449)
at com.google.tracing.TraceContext$TraceContextRunnable$1.run
 (TraceContext.java:455)
at com.google.tracing.TraceContext.runInContext(TraceContext.java:695)
at com.google.tracing.TraceContext$AbstractTraceContextCallback.
 runInInheritedContextNoUnref(TraceContext.java:333)
at com.google.tracing.TraceContext$AbstractTraceContextCallback.
 runInInheritedContext(TraceContext.java:325)
at com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:453)
at java.lang.Thread.run(Thread.java:679)

我的应用链接:http://jdodemo02.appspot.com/ 如有任何建议 ):

5个回答

13

使用Java SE 6编译您的应用程序。GAE不支持Java SE 7。在本地工作是因为GAE模拟器运行在您本地的JDK之上。


1
终于做到了,感谢你的支持。事实上,在编译项目之前,我已经改用JRE6,但仍然出现错误,因为我忘记将JDK从1.7更改为1.6(JRE6不支持JDK 1.7)。希望这能帮助需要的人 :3 - ducnh

3

与其直接编辑 .settings 文件夹下的 org.eclipse.wst.common.project.facet.core.xml 文件,可以在 Eclipse 中进行以下操作:

右击你的 Eclipse 项目

选择 属性

在左侧面板中选择 "项目外观"

适当选择 Java 版本

enter image description here


3

一件事情是将JRE 6设置为构建路径和编译器。不要忘记,一旦用不同的JRE或JDK创建了GAE Web应用程序项目, 请始终检查.settings文件夹中的 org.eclipse.wst.common.project.facet.core.xml 中的Java版本。


1

我已经奋斗了好几天。我有一台Mac电脑,需要使用GCM开发Android应用程序。我唯一能够在Android Studio中让GAE正常工作,并且与我安装的JVM兼容的方法是:

  • 安装Homebrew
  • 使用Homebrew Cask进行自定义(brew install caskroom/cask/brew-cask)。
  • 使用homebrew cask安装Java(brew cask install java)。
  • 使用homebrew cask安装Android Studio(brew cask install android-studio)。
  • 将Studio更新到最新版本。
  • 进入Studio中项目的设置,并将目标JDK更改为homebrew安装的JDK(1.8位于/Library/Java/Home,实际上是一个符号链接)。

希望你们中没有人像我一样走过这条路,一个人不可能走进魔多,这已经是漫长的5天战斗了。


0

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