[Seasar-user:19110] [S2Dao]jarファイルにて実行するとgetRootDirにてNullPointerExceptionが発生する

お 湯 [E-MAIL ADDRESS DELETED]
2010年 1月 7日 (木) 13:13:51 JST


お世話になっております。お湯です。
前回MLにて回答を頂いた箇所から、どうしても解決しないため
ご指摘いただければと思いメール致します。

前回こちらのMLに質問させていただきましたが
(http://ml.seasar.org/archives/seasar-user/2010-January/019095.html)
ご指摘いただいた箇所を修正し、javaビルド後のjarファイルを展開→Rubyアプリケーションにて実行したところ
掲題の通りgetRootDirにてNullPointerExceptionが発生しております。

diconファイルを読んで、Containerを生成するタイミングでDaoのクラスファイルが読めずに
エラーとなっているのだと考えていますが、どのように修正すればよいのか全く検討がつきません。
jarファイルのS2Daoを使用するアプリケーションを実行する場合、
実行の基点が変わってしまうためなのでしょうか?

修正するとすればdiconファイル
<component class="org.seasar.framework.container.autoregister.FileSystemComponentAutoRegister">
の中身の部分(packageのpathなど)だと考えていますが、正しいでしょうか?

以下にファイル構成、コンソールのエラー内容、Main.java、diconファイルについて記載致します。

お忙しいところ大変申し訳ありませんが、ご教授の程宜しくお願いいたします。
Rubyアプリケーションファイル構成
sample--kanri--jp--sample--sample_test--test--GetTest.rb
            --lib--TestDao-1.0.jar
Javaプロジェクトファイル構成
JavaSample--src--test--Main.java
           Sample.java
           SampleDao.java
           SampleDao.dicon
        --j2ee.dicon
         jdbc.dicon
         jta.dicon

■エラー
------Sample Main 開始------
------設定ファイル pathセット完了------
org/seasar/framework/container/autoregister/FileSystemComponentAutoRegister.java:55:in `getRootDir': java.lang.NullPointerException: null (NativeException)
    from org/seasar/framework/container/autoregister/FileSystemComponentAutoRegister.java:33:in `registerAll'
    from sun.reflect.NativeMethodAccessorImpl:-2:in `invoke0'
    from sun.reflect.NativeMethodAccessorImpl:-1:in `invoke'
    from sun.reflect.DelegatingMethodAccessorImpl:-1:in `invoke'
    from java.lang.reflect.Method:-1:in `invoke'
    from org/seasar/framework/util/MethodUtil.java:93:in `invoke'
    from org/seasar/framework/container/assembler/AbstractMethodAssembler.java:94:in `invoke'
    from org/seasar/framework/container/assembler/DefaultInitMethodAssembler.java:49:in `assemble'
    from org/seasar/framework/container/deployer/SingletonComponentDeployer.java:69:in `assemble'
    from org/seasar/framework/container/deployer/SingletonComponentDeployer.java:48:in `deploy'
    from org/seasar/framework/container/deployer/SingletonComponentDeployer.java:76:in `init'
    from org/seasar/framework/container/impl/ComponentDefImpl.java:236:in `init'
    from org/seasar/framework/container/impl/S2ContainerImpl.java:563:in `init'
    from org/seasar/framework/container/factory/SingletonS2ContainerFactory.java:150:in `init'
    from test/Main.java:16:in `main'
    from kanri/jp/sample/sample_test/test/GetTest.rb:21

■Main.java
package test;

import org.seasar.framework.container.S2Container;
import org.seasar.framework.container.factory.SingletonS2ContainerFactory;

public class Main {
    private static Sample[] smArray;
    private static final String PATH = "test/SampleDao.dicon";

    public static void main(String[] args){
        System.out.println("------Sample Main 開始------");
         // 設定ファイルを読み込む.
        SingletonS2ContainerFactory.setConfigPath(PATH);
        System.out.println("------設定ファイル pathセット完了------");
        // 初期化する.
        SingletonS2ContainerFactory.init();

        ~(略)

■SampleDao.dicon
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"
"http://www.seasar.org/dtd/components24.dtd">
<components>
    <include path="dao.dicon"/>
    <include path="j2ee.dicon"/>

    <!-- ログ出力用のコンポーネント -->
    <component name="traceInterceptor" class="org.seasar.framework.aop.interceptors.TraceInterceptor"/>

    <!-- コンポーネントの自動登録-->

    <component
        class="org.seasar.framework.container.autoregister.FileSystemComponentAutoRegister">
        <property name="autoNaming">
        <component class="org.seasar.framework.container.autoregister.DefaultAutoNaming"/>
        </property>
        <initMethod name="addClassPattern">
        <arg>"test"</arg>
        <arg>".*Dao"</arg>
        </initMethod>
    </component>

    <!-- アスペクトの自動登録 -->
    <component class="org.seasar.framework.container.autoregister.AspectAutoRegister">
        <property name="interceptor">j2ee.requiredTx</property>
            <initMethod name="addClassPattern">
            <arg>"test"</arg>
            <arg>".*Dao"</arg>
            </initMethod>
        </component>
    <component class="org.seasar.framework.container.autoregister.AspectAutoRegister">
        <property name="interceptor">dao.interceptor</property>
            <initMethod name="addClassPattern">
            <arg>"test"</arg>
            <arg>".*Dao"</arg>
            </initMethod>
    </component>
</components>

 		 	   		  
_________________________________________________________________
Windows 7とOfficeが安くなる!(ダウンロード版)
http://promotion.live.jp/special/msstore/


Seasar-user メーリングリストの案内