GAE に配置した Servlet が動かなくてしばらく困っていたけどようやく解決
ちょっと GAE/J を使って作りたいものができたので、JDK 1.7.0 + Eclipse 3.7.1 が入ってる PC に GAE SDK 1.6.0 を入れてみました。
ちょちょいとサンプルアプリケーションを作ってローカルでは動かすことができましたが、GAE にデプロイしてみると Servlet が動かず、こんなエラーを返して来ました。
Error: Server Error
The server encountered an error and could not complete your request.
If the problem persists, please report your problem and mention this error message and the query that caused it.
GAE の管理コンソールからログを見てみると、こんな例外が。
Failed startup of context com.google.apphosting.utils.jetty.RuntimeAppEngineWebAppContext@1fc468e{/,/base/data/home/apps/s~sasaminn-gae-sample/1.354956893975889229}
org.mortbay.util.MultiException[java.lang.UnsupportedClassVersionError: sasa/gae_sample/Gae_sampleServlet : Unsupported major.minor version 51.0]…
UnsupportedClassVersionError とか言っているので GAE SDK のヘルプを見てみたところ、
Google App Engine では、Java 5 と Java 6 がサポートされています。App Engine 上で実行される Java アプリケーションは、Java 6 仮想マシン(JVM)と標準ライブラリを使用して動作します。
とのこと…。1.6 用にコンパイルしないとダメなのね…。
JDK のダウングレードとかしたくなかったので、何とかできる方法がきっとあるはずと思って探してみたら、1つ方法を発見。
プロジェクトのプロパティに Java Compiler というカテゴリがあり、ここの Compiler compliance level を 1.6 に設定すると、GAE に配置してもちゃんと動作するようになりました。
とりあえず、めでたしめでたし。
Comments
Post a Comment