[GAE]NoClassDefFoundError: javax.servlet.FilterChainの解決法

Pocket

久しぶりにGoogle App Engine(以下GAE)のアプリをローカル環境でいじってみたら、以下の様なエラーが発生。

HTTP ERROR 500

Problem accessing /[アプリケーション名]. Reason:

javax.servlet.FilterChain is a restricted class. Please see the Google App Engine developer's guide for more details.
Caused by:

java.lang.NoClassDefFoundError: javax.servlet.FilterChain is a restricted class. Please see the Google App Engine developer's guide for more details.

新規プロジェクトで作成されるデモ(TestServlet)でもサーブレットを動かすと同様の挙動になるので、これはJDKかApp Engine SDKの問題かなーと当たりを付けて調べてみました。(主に海外サイトを巡回)


スポンサードリンク



どうやらgoogle側がJDKの新しいバージョンに未対応の場合に起きる問題のようです。
解決策はJDKのバージョンダウン

Google DevelopersサイトのGoogle App Engineチュートリアルでは以下のように1.7.0_45を使用しています。

2.Set your JAVA_HOME environment variable. If you are a bash user

a.For a typical Linux installation, add a line similar to the following to your .bashrc file:

export JAVA_HOME=/usr/local/tools/java/jdk1.7.0_45.jdk


自分の環境ではJDK1.7.0_60で問題が発生していましたが、JDK1.7.0_45にバージョンダウンしたところ問題なく動作することを確認


JDK1.7を使用するように!とは書いてありますが、マイナーバージョンまで気にしないといけないとはちょっとgoogleさん不親切じゃないですかね・・・。



さて。
自分がそうだったのですが、もし古いバージョンのJDKを持っていない場合は該当バージョンをダウンロードしなければなりません。


過去バージョンのJDK/JREのダウンロードはOracleでアーカイブされているのでそこから行います。


上記のリンクからOracleのアーカイブページへ飛び、Java SE 7をクリック。
Java SE Development Kit 7u45を選択しダウンロードするのですが、Oracleプロファイルというものに登録しなければならず、これが結構やっかいなんですねー。

メールアカウント、パスワード、氏名、会社名、所属部署、電話番号、住所・・・これ全て必須項目になっています。


自分は個人的な趣味でやっているので、会社名や所属部署は「個人」と入力しましたがきっと大丈夫でしょう。


業務で使用される方は問題ないと思いますが・・・
話しが少しそれますが、現役SE/PG時代にこういうのに登録したところ、会社にセールスの電話が掛かってきて困ったことがありました。

天下のOracleさんがそんなことはしないとは思いますが、なんとなく気になるところです。



お役に立てましたか?

ブックマークをどうぞ!

スポンサード リンク

“[GAE]NoClassDefFoundError: javax.servlet.FilterChainの解決法” への 1 件のフィードバック

コメントを残す