slim3 on Macでjava.lang.NoClassDefFoundError

2011-03-03 07:35

というわけで、関係ない人にはまったく関係ない話だが、きっと私と同じように検索エンジンをたたきまくる人もいるのではないかと思い。

Mac 上でGAE+Slim3を動かそうとしていた。eclipseのインストール終了、GAEのインストール終了、slim3もはいった。さてtutorialにあるプログラムを動かそう、とする。

ブラウザからローカルのサーバーにアクセスすると、確かにHelloなんちゃらが表示される。しかしEclipseのコンソールを見るとエラーが山のようにでている。おそらく一番主要なものは

java.lang.NoClassDefFoundError: Could not initialize class org.slim3.datastore.Datastore

なにやらDatastoreでエラーが起こっているらしい。でもデータの保存なんか(まだ)してないぞ。
あれこれやってみるが解消しない。上記のエラーメッセージをGoogle先生に投げてみるがどうもサポートがTwitterで行われているらしく、検索しにくくてしょうがない。

しかしその中にヒントがあった。

Geek Social Networkより引用:

toomore_such @shin1ogawa いいえ。今 blank と比較していたのですが、逆ã « war/WEB-INF/lib 配下に #appengine 絡みの jar が何も無いという... ここでしょうか。#slim3

なるほど、と確かにwar/WEB-INF/lib以下を調べてみれば、google app engineに必要と思われるjarが空っぽである。

しかし不思議なことだ。Windows上で同じ操作をしたときは、ちゃんとこれらのjarがこのディレクトリにコピーされていたのに。(私が何もしなくても)

ではさっそくコピーだ。さて、問題です。Google App Engineがらみのjarとはいったいなんでしょう。しかたがないので、新しいGAEのプロジェクトを作る(単なるダミー)それのwar/WEB-INF/libの中をのぞいてみると、あれこれjarができている。それをごそっとslim3で作ったプロジェクトの同ディレクトリにコピーする。

祈るような気持ちでlocalhost:8888/ほにゃららにアクセスする。すると今度は何のエラーも吐かず結果が返ってくる。やれありがたい。

という過程を経て、私が何を作っているかは内緒。

ほかにつまづいたところ:

チュートリアルどおりコントローラーを作成しようとすると「32bitと64bitがうんたらかんたら」と怒られる。
(解決方法その1)Eclipseを64bitにする
(解決方法その2)Javaを32bitで立ち上げるようにする。

どちらがいいのかわからないけど、私は(解決方法その2)でやっています。