について、いろいろメモ。 s2-dao-1.0.36-SNAPSHOT を使いたい編
<< 注意 >>
ここに記載しているメモは、動作させるために無理くり修正しています。
正しい動作方法ではありません。
s2-dao-1.0.36-SNAPSHOTを使いたかったので、buildして組み込んでみるとエラーが発生。
java.lang.NoClassDefFoundError: org/seasar/framework/util/Disposable
使っていたs2-framework-2.4.0-beta-3には、このクラスがないみたい。
最新のSVNをのぞいてみると、6/28に追加されてますね。
seasarも最新に差し替えてみる。s2-framework-2.4.0-beta-4 にすると
java.lang.NoClassDefFoundError: org/seasar/framework/util/ResourceNotFoundRuntimeException at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Unknown Source) at org.seasar.framework.util.ClassUtil.forName(ClassUtil.java:72) at org.seasar.framework.container.factory.ComponentTagHandler.start(ComponentTagHandler.java:46) at org.seasar.framework.xml.SaxHandler.start(SaxHandler.java:132) at org.seasar.framework.xml.SaxHandler.start(SaxHandler.java:126) at org.seasar.framework.xml.SaxHandler.startElement(SaxHandler.java:60)
またエラー。。。
s2-framework-2.4.0-beta-4のJARにはutil/ResourceNotFoundRuntimeExceptionがないですね。
exception/ResourceNotFoundRuntimeExceptionにあるんだけど、なんでutilパッケージを見てるんかなぁ。
ソースを見る限り、utilのResourceNotFoundRuntimeExceptionは見ないはずなんやけど。
SVNをおっかけたら、5月にutilにResourceNotFoundRuntimeExceptionがあった模様。
う〜ん。古いJARをみにいってるのかな〜。
さて、動かないときは、diconファイルを疑ってみる。
beta-3にくらべて、hotdeploy.diconとconvention.diconが増えてますね。
ChangeLogには記載がないなぁ〜。。。。とりあえず追加してみる。
現象変わらず・・・
しょうがないので、暫定対応。
org/seasar/framework/util/ResourceNotFoundRuntimeException を作って回避。
また新たなエラー。。。
org.seasar.framework.beans.PropertyNotFoundRuntimeException: [ESSR0065]クラス(org.seasar.framework.convention.impl.NamingConventionImpl)のプロパティ(rootPackageName)が見つかりません at org.seasar.framework.beans.impl.BeanDescImpl.getPropertyDesc(BeanDescImpl.java:125) at org.seasar.framework.container.assembler.AccessTypePropertyDef.bind(AccessTypePropertyDef.java:30) at org.seasar.framework.container.assembler.AccessTypePropertyDef.bind(AccessTypePropertyDef.java:23)
NamingConventionImpl には rootPackageNameフィールドはありませんがconvention.dicon で以下のように定義しているため、エラーになるようです。
Seasar2.4 beta4に対応したteeda-html-exampleを参考に追加したんですが、
"exsample.project"
rootPackageNameのところをコメントアウトにしました。
XXXXXAutoRegisterをしているdiconファイルは、
で、次のエラー。
java.lang.IllegalArgumentException: exsample.project.web.impl.admin.AdminActionImpl at org.seasar.framework.convention.impl.NamingConventionImpl.fromClassNameToComponentName(NamingConventionImpl.java:286) at org.seasar.framework.container.autoregister.AbstractComponentAutoRegister.register(AbstractComponentAutoRegister.java:113) at org.seasar.framework.container.autoregister.AbstractComponentAutoRegister.processClass(AbstractComponentAutoRegister.java:102) at org.seasar.framework.util.ClassTraversal.traverseFileSystem(ClassTraversal.java:81)
NamingConventionImplクラスの283行目のクラス名の取得のところでこけている。
暫定対応で以下修正。
[前] String implkey = "." + implementationPackageName + ".";
[後] String implkey = implementationPackageName + ".";
ここまできて、やっとことさTOMCATが起動しました。