我一直在使用 play framework 开发一个 web 应用程序(使用 eclipse)。我使用的是 Play 1.2.3 和 JDK6,然后我不得不更改使用 JDK7 的开发环境(新电脑)。我的依赖是:
require:
- play
- play -> crudsiena 2.0.1
- play -> siena 2.0.5
- play -> secure
- play -> gae 1.6
- provided -> opencsv 2.3
- provided -> ddlutils_siena 1.0
- provided -> gae_aws_sdk 1.1.7.1
#- provided -> play 1.2.4
#- provided -> httpclient 4.1.1
#- provided -> httpcore 4.1
repositories:
- provided:
type: local
artifact: "${application.path}/jar/[module]-[revision].jar"
contains:
- provided -> *
更新后,我什至无法在本地主机上运行应用程序,所以我开始了研究。我发现Play 1.2.3不支持JDK7,所以我换成了1.2.4。然后我还将 Siena 版本更新为 2.0.7,并将以下行包含到我的 application.conf 中:
java.source=1.7
我什至用 play 创建了一个新项目并将必要的文件复制到新项目中。我设置了正确的 JAVA_HOME 环境变量。我的本地主机上的应用程序运行良好。但是,当我在 Google App Engine 上更新版本时,仍然出现以下错误:
Uncaught exception from servlet
java.lang.UnsupportedClassVersionError: controllers/Admin : Unsupported major.minor version 51.0
at com.google.appengine.runtime.Request.process-1921becf6a885374(Request.java)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:174)
at play.classloading.ApplicationClassloader.loadApplicationClass(ApplicationClassloader.java:118)
at play.classloading.ApplicationClassloader.getAllClasses(ApplicationClassloader.java:401)
at play.Play.preCompile(Play.java:570)
at play.Play.init(Play.java:299)
at play.server.ServletWrapper.contextInitialized(ServletWrapper.java:77)
at org.mortbay.jetty.handler.ContextHandler.startContext(ContextHandler.java:548)
at org.mortbay.jetty.servlet.Context.startContext(Context.java:136)
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:452)
at com.google.tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.java:459)
at com.google.tracing.TraceContext.runInContext(TraceContext.java:701)
at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:336)
at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:328)
at com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:456)
at java.lang.Thread.run(Thread.java:679)
我确实意识到这与从 JDK6 到 JDK7 的转换有关,但是我不知道还有什么地方可以让应用程序在 GAE 上运行。此外,编译器在 Eclipse 中设置为 1.7。
请帮我解决这个问题。