私はしばらくの間、プレイフレームワークを使用して(Eclipseを使用して)Webアプリを開発しています。Play 1.2.3 と JDK6 を使用していたので、JDK7 を使用する開発環境 (新しい PC) を変更する必要がありました。私の依存関係は次のとおりです。
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に設定されています。
私と一緒にこれを整理するのを手伝ってください。