commons loggingにハマる
プロジェクトで利用するバッチアプリの開発がほぼ終了したので実行してみたら、以下のようなエラーが発生した。(抜粋)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.impl.Log4JLogger at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClassInternal(Unknown Source) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Unknown Source) at org.apache.commons.logging.impl.LogFactoryImpl$1.run(LogFactoryImpl.java:447) at java.security.AccessController.doPrivileged(Native Method) at org.apache.commons.logging.impl.LogFactoryImpl.loadClass(LogFactoryImpl.java:435) at org.apache.commons.logging.impl.LogFactoryImpl.getLogConstructor(LogFactoryImpl.java:376) ... 11 more
CLASSPATHもきちんと設定しているし、commons-loggingのjarも正常に配置している。なんなんだこれは・・・と途方にくれていたんだけど、commons-logging.propertiesをよく見てみたら、
org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger
の最後に半角スペースが一つだけくっついてた。まさかこれのはずないよなぁと思いながらもスペースを消して、実行してみたら。。。
動いた。
という訳で、半角スペースには気をつけようというお話。ぎゃふん。