えいのうにっき

a-knowの日記です

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に切り替えるかなぁ。。(いつかはやんなきゃいけないんだし)