[seasar-dotnet:228] Re: S2Containerの初期化時にSeasar.Dao名前空間のClassを読み込めない

Hiroaki Fujii jiifureit @ jiifureit.ac
2006年 6月 1日 (木) 12:53:24 JST


藤井です。

WindowsFormなのかASPなのかよく分かりませんが、
WindowsFormと仮定します。

確認して欲しいことがあります。

TestCaseのプロジェクトのApp.Configの中で、
<seasar>
    <assemblys>
        <assembly>Seasar.Dao</assembly> <--ここ
           (中略)
    </assemblys>
    <configPath>Examples.dicon</configPath>
</seasar>
<--ここと書いた行があるでしょうか?
Exeのプロジェクトでも同じです。

次に、Testcaseのプロジェクトは出力アセンブリがDLLと思いますが
VS2003の場合、上記のApp.configはビルド先にコピーされません。
Exeの場合だけです。
なので、手動でApp.configをDLLのビルド先にコピーして、仮にDLL名を
hoge.dllとすると、App.configからhoge.dll.configに変更します。
VS2005では、自動でコピーしてくれるか不明ですが(未使用のため)
もしコピーされていないなら、手動でコピーしてください。

以上、行われているか確認してみてください。

弊社内で使用するとき、上記のミスをけっこうしてしまいます。

関 真理子 wrote:
> はじめまして、関と申します。
> 
> 次期案件に向けて、S2Container.NET・S2Dao.NETの動作検証をしています。
> 件名の現象が発生し、困っています。アドバイスいただけませんでしょうか。
> 
> ○環境
> WindowsXP SP2
> VS2005 Team Edition
> .NET2.0
> S2Container.NET 1.2.0-RC2 (.NET 2.0)
> S2Dao.NET 0.4.2
> 
> ○現象
> S2Dao.NETのExamplesを見てAutoSelectを行うメソッドを作成し、
> VS2005についているテスト機能&Mainメソッドから実行しています。
> 
> その際、
> IS2Container container = S2ContainerFactory.Create("hoge.dicon");
> のところで、Seasar.Dao配下のクラスが見れずClassNotFoundRuntimeException
> が発生してしまいます。
> 
> dllが見れてないのかと思い、S2ContainerFactory.Createメソッドの前に、
> Seasar.Dao配下のEndCommentNotFoundRuntimeExceptionクラスをnewしてみたところ、
> 正しくnewでき、さらにコンテナの初期化も正しく動作しました。
> (EndCommentNotFoundRuntimeExceptionのnewを外すとまた
> ClassNotFoundRuntimeExceptionが発生します)
> 
> dllの指定は、プロジェクトの参照設定で行っています。
> 
> 以下は、発生しているエラーです。
> ----------------
> [エラーメッセージ]
> テスト メソッド TestProject1.S2trial.S2Dao.AutoSelect.FreeSpaceDaoTest.FreeSpaceAutoSelectTestMethod は例外をスローしました:  Seasar.Framework.Container.Factory.ClassNotFoundRuntimeException: [ESSR0044]Class not found, details are  "Seasar.Dao.Impl.DaoMetaDataFactoryImpl"。
> [スタックトレース]
>     場所 Seasar.Framework.Xml.XmlHandler.Start(TagHandler handler, IAttributes attributes)
>    場所 Seasar.Framework.Xml.XmlHandlerParser.Parse(StreamReader input)
>    場所 Seasar.Framework.Xml.XmlHandlerParser.Parse(String path)
>    場所 Seasar.Framework.Container.Factory.XmlS2ContainerBuilder.Build(String path)
>    場所 Seasar.Framework.Container.Factory.S2ContainerFactory.Create(String path)
>    場所 TestProject1.S2trial.S2Dao.AutoSelect.FreeSpaceDaoTest.FreeSpaceAutoSelectTestMethod() 場所 C:\mspadmin\workspace\mspadmin-trial\s2trial\TestProject1\S2trial.S2Dao\AutoSelect\FreeSpaceDaoTest.cs:行 75
> ----------------
> 
> 
> 何かお気づきの点ありましたらお教えいただければと思います。
> よろしくお願いします。
> 
> 以上です。




seasar-dotnet メーリングリストの案内