えいのうにっき

主に Web 系技術ネタ。背景画像 is powered by grass-graph.shitemil.works

GAE/JのSDKがエラーを吐くようになった。

今日朝起きてeclipseを立ち上げたら、特に何をした覚えもないのに「\plugins\com.google.appengine.eclipse.sdkbundle_1.2.1.v200905131143\appengine-java-sdk-1.2.1\config\sdk\logging.properties」が見つからない、というエラーが出るようになった。
正直寝起きで「知らんがな」という気分だったので、開発中のworkspaceのWEB-INF内の同ファイルをコピー(乱暴)して、無いと言われる場所に放り込んだ(ディレクトリもなかったので作ってやった)。

すると今度は、吐かれるエラーが以下のようなものに変わった。

java.lang.IllegalArgumentException: Unable to find C:\EclipseForGae\eclipse\plugins\com.google.appengine.eclipse.sdkbundle_1.2.1.v200905131143\appengine-java-sdk-1.2.1\lib\tools\orm
at com.google.appengine.tools.info.SdkInfo.getLibs(SdkInfo.java:56)
at com.google.appengine.tools.info.SdkImplInfo.getOrmToolLibs(SdkImplInfo.java:44)
at com.google.appengine.tools.enhancer.EnhancerLoader.getClassPath(EnhancerLoader.java:33)
at com.google.appengine.tools.enhancer.EnhancerLoader.(EnhancerLoader.java:29)
at com.google.appengine.tools.enhancer.Enhancer.execute(Enhancer.java:52)
at com.google.appengine.tools.enhancer.Enhance.(Enhance.java:60)
at com.google.appengine.tools.enhancer.Enhance.main(Enhance.java:41)


また、ディレクトリが無いと言うておる。「無いのなら 作ってやろう ディレクトリ」。
すると今度は以下のようなエラーに。

java.lang.RuntimeException: Unexpected exception
at com.google.appengine.tools.enhancer.Enhancer.execute(Enhancer.java:59)
at com.google.appengine.tools.enhancer.Enhance.(Enhance.java:60)
at com.google.appengine.tools.enhancer.Enhance.main(Enhance.java:41)
Caused by: java.lang.ClassNotFoundException: org.datanucleus.enhancer.DataNucleusEnhancer
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at com.google.appengine.tools.enhancer.EnhancerLoader.loadClass(EnhancerLoader.java:89)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at com.google.appengine.tools.enhancer.Enhancer.execute(Enhancer.java:55)
... 2 more


ふーん。。今まで無かったディレクトリにパスが通ってて、そこになきゃいけないものがない、という感じかな。
ここまで来て少し調べてみたら、なんとなく「DataNucleusを動かしてみる - 大河内教授の憂鬱」こちらがいいかんじ。
DataNucleusのダウンロードページから、enhancerのみを見繕ってダウンロード、jarを上述のディレクトリに入れてみる。
すると今度は

DataNucleus Enhancer (version 1.1.4) : Enhancement of classes
You have selected to use ClassEnhancer "ASM" yet the JAR for that enhancer does not seem to be in the CLASSPATH!


と来たので、先ほどのページからasmのjarもダウンロード、同じディレクトリに入れてやることで、とりあえずはエラーは発生しなくなりました。


プログラミングって実は、こういうプログラミングそのものとは違うところで悩んだり、時間を取られたりするもんなんだよね。。

追記(2009/09/13 13:11)

よくよく見たら、今回の一連の問題が起こっていたパス(〜\appengine-java-sdk-1.2.1\〜)からもわかるように、古いSDK由来のエラーだったよう。・・・バージョンアップに伴う問題の多発を怖がってないで、そろそろ1.2.5に切り替えるかなぁ。。(いつかはやんなきゃいけないんだし)