3

我在 Google App Engine 的日志中得到不受支持的 major.minor 版本 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 Runtime Environment (build 1.7.0_21-b12) Java HotSpot(TM) 64-Bit Server VM (build 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:com.google.appengine.runtime.Request.process-4a9c14a818a2f9f2(请求。 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) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ) 在 java.lang.ClassLoader 的 java.lang.reflect.Method.invoke(Method.java:616)。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。 org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:467) 的 org.mortbay.ContextHandler.doStart(ContextHandler.java:517)。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(线程.java:679)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)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)com.google.tracing.TraceContext$DoInTraceContext.runInContext(TraceContext.java:754) 上的 google.tracing.TraceContext.runInContext(TraceContext.java:777) 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)com.google.tracing.TraceContext$DoInTraceContext.runInContext(TraceContext.java:754) 上的 google.tracing.TraceContext.runInContext(TraceContext.java:777) 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)TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:337) at com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:487) at java.lang.Thread.run(Thread.java:679)TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:337) at com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:487) at java.lang.Thread.run(Thread.java:679)

4

1 回答 1

0

我已经遇到过几次这个问题,关键是找出哪个类被错误的版本编译。它可能是例如依赖项之一。您可以使用Java API 中的片段来找出编译类文件的 JDK 版本吗?您针对应用程序使用的所有类文件运行它。这些是其中的webappdir/WEB-INF/classes,您还需要将所有 JAR 文件从webappdir/WEB-INF/lib.

于 2013-11-25T10:49:20.250 回答