当前位置: 首页 > 知识库问答 >
问题:

App Engine 1.8.2不支持的主要次要版本51.0

呼延宪
2023-03-14

在Google App Engine的日志中,我major.minor版本51.0不受支持。我知道Stackoverflow上有很多关于这个问题的帖子,但这些帖子大多来自2012年,当时App Engine还在JRE 6上。现在App Engine是在JRE 7上运行的1.8.2版。我使用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 热点(TM) 64 位服务器虚拟机(构建 23.21-b01,混合模式)

所以,据我所知,我的应用程序是使用JRE 7构建的,应用程序引擎在JRE 7上工作。我不明白的是,为什么实时应用程序引擎仍然抱怨不支持的版本51.0,我知道它代表JRE 7?我不能降级到JRE 6,因为(1)我们正在使用需要JRE 7的特定Hibernate功能,(2)应用程序引擎可能会停止对JRE 6的支持。

有人也有这样的经历吗?在下面,您可以找到发生这种情况时的实际应用程序引擎错误日志。

谢谢!

拉尔夫

=====来自servlet java.lang.UnsupportedClassVersionError:com/arcus/pba/server/guice/MyGuiceServletContextListener:Unsupported major的未捕获异常。com.google.appengine.runtime.Request.process-4a9c14a818a2f9f2(Request.java)的次要版本51.0,位于java.lang.ClassLoader。sun.reflect.NativeMethodAccessorImpl上java.net.URLClassLoader.defineClass(URLClass Loader.java:277)的java.security.SecureClassLoader.defineClass中java.lang.ClassLoadder.define Class(ClassLoaders.java:634)的defineClass1(本机方法)。位于java.lang.reflect.Method.invoke(Method.java:616)的sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法),位于org.mortbay.jetty.handler.ContextHandler.loadClass的java.lang.ClassLoader.loadClass(ClassLoader.java:266),位于org.mortbay.jetty.webapp.WebXmlConfiguration.initialize(WebXmlConfiguration.java:630)位于org.mortbay.jettey.webpp.WebXml Configuration.InitializeWebXmlElement(WebXml配置.java:368),位于org.motbay.jetty.websapp.WebXML配置.initial(WebXllConfiguration.java:289),位于org.mortbay.jetty.webapp.WebXmlConfiguration.configureWebApp(WebXmlConfiguration.java:180)位于org.motbay.jetty.websapp.WebAppContext.startContext(WebAppContext.java:1247)位于org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandller.java:517),位于org.mortbay.jettey.webpp.WebAppContext.doStart(WebAppContext.java:467),位置位于org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)位于com.google.tracing.TraceContext.runInContext(TraceContext$DoInTraceContact.runInContext)(TraceContext.java:483),位于com.gougle.tracingcom.google.tracing.TraceContext$AbstractTraceContextCallback.runInInInheritedContextNoUnref(TraceContact.java:345),位于com.goole.tracing.StraceContext的com.google.TraceContext$AbtraceContextCarlback.rrunInInheritedContext(TraceContext.java:337),位于java.lang.Thread.run(Thread.java:679)

共有1个答案

黄景胜
2023-03-14

这个问题我已经遇到过几次了,关键是要找出哪个类编译了错误的版本。例如,它可能是依赖关系之一。你可以使用Java API的snippet来找出编译一个类文件的JDK版本?对应用程序使用的所有类文件运行。这些是< code > WEB appdir/we b-INF/classes 中的文件,您还需要从< code > WEB appdir/we b-INF/lib 中解压缩所有JAR文件。

 类似资料: