[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 メーリングリストの案内