google-app-engine - App Engine 1.8.2 不支持主要版本 51.0

标签 google-app-engine

我在 Google App Engine 日志中收到不受支持的主次版本 51.0。我知道 Stackoverflow 上有很多关于此问题的帖子,但这些帖子大多来自 2012 年,当时 App Engine 仍在 JRE 6 上。现在 App Engine 的版本为 1.8.2,在 JRE 7 上运行。我使用 Maven 和 IntelliJ开发我的应用程序,并将两者的目标 JDK 设置为 1.7(实际上 IntelliJ 只是采用 Maven 设置)。我的本地 Java 环境(在 Mac OSX 10.7.5 上)显示:

java版本“1.7.0_21” Java(TM) SE 运行时环境(版本 1.7.0_21-b12) Java HotSpot(TM) 64 位服务器 VM(内部版本 23.21-b01,混合模式)

因此,据我所知,我的应用程序是使用 JRE 7 构建的,App Engine 在 JRE 7 上运行。我不明白的是为什么实时 App Engine 仍然提示不受支持的版本 51.0,我理解代表 JRE 7?我无法降级到 JRE 6,因为 (1) 我们正在使用需要 JRE 7 的特定 Hibernate 功能,并且 (2) App Engine 可能会停止对 JRE 6 的支持。

有人也有这样的经历吗?您可以在下面找到发生这种情况时的实际 App Engine 错误日志。

谢谢!

拉尔夫

===== servlet 中未捕获的异常 java.lang.UnsupportedClassVersionError:com/arcus/pba/server/guice/MyGuiceServletContextListener:不支持的major.minor版本51.0 在 com.google.appengine.runtime.Request.process-4a9c14a818a2f9f2(Request.java) 在 java.lang.ClassLoader.defineClass1( native 方法) 在 java.lang.ClassLoader.defineClass(ClassLoader.java:634) 在 java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 在 java.net.URLClassLoader.defineClass(URLClassLoader.java:277) 在 sun.reflect.NativeMethodAccessorImpl.invoke0( native 方法) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:616) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:266) 在 org.mortbay.jetty.handler.ContextHandler.loadClass(ContextHandler.java:1101) 在 org.mortbay.jetty.webapp.WebXmlConfiguration.initListener(WebXmlConfiguration.java:630) 在 org.mortbay.jetty.webapp.WebXmlConfiguration.initWebXmlElement(WebXmlConfiguration.java:368) 在 org.mortbay.jetty.webapp.WebXmlConfiguration.initialize(WebXmlConfiguration.java:289) 在 org.mortbay.jetty.webapp.WebXmlConfiguration.configure(WebXmlConfiguration.java:222) 在 org.mortbay.jetty.webapp.WebXmlConfiguration.configureWebApp(WebXmlConfiguration.java:180) 在 org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1247) 在 org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:517) 在 org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:467) 在 org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) 在 com.google.tracing.TraceContext$TraceContextRunnable.runInContext(TraceContext.java:483) 在 com.google.tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.java:490) 在com.google.tracing.TraceContext.runInContext(TraceContext.java:777) 在 com.google.tracing.TraceContext$DoInTraceContext.runInContext(TraceContext.java:754) 在 com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:345) 在 com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:337) 在 com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:487) 在 java.lang.Thread.run(Thread.java:679)

最佳答案

我已经遇到过几次这个问题,关键是找到哪个类被编译为错误的版本。它可能是例如依赖之一。您可以使用 Java API to find out the JDK version a class file is compiled for? 中的片段您可以针对应用程序使用的所有类文件运行它。这些是 webappdir/WEB-INF/classes 中的文件,您还需要从 webappdir/WEB-INF/lib 中解压所有 JAR 文件。

关于google-app-engine - App Engine 1.8.2 不支持主要版本 51.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17853376/

相关文章:

wordpress - 找不到与我的 GOOGLE APP 引擎应用程序关联的任何远程存储库

google-app-engine - 无法启用对 Google App Engine IAP 的 CORS 请求

javascript - ndb.key() -> 使用 Javascript 执行此操作

go - gcloud 应用程序部署说 : exec: "git": executable file not found in $PATH

html - 搜索引擎 - 应用引擎

google-app-engine - App Engine 裁剪到特定的宽度和高度

google-app-engine - App Engine ndb - 如何使用 id 按键加载实体?

python - iOS 上的 Google Cloud Endpoints 发现文档更改/演化支持?

java - AppEngine HR Datastore 是否会自动分配负 ID?

google-app-engine - 如何在jvmFlags中的projectDir中使用Gradle中的appengineRun?