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 に配置してもちゃんと動作するようになりました。

とりあえず、めでたしめでたし。

image

Comments

Popular posts from this blog

TFS: 別PCでのチェックアウトを取り消す

WPF の RichTextBox に文字列を設定する&取り出す

WPFアプリにアニメーションGIFを表示させる