[Seasar-user:21952] Re: Cool Deployモードでjarファイル化して実行した場合のESSR0046コンポーネント見つからないエラー発生に関しまして
Koichi Kobayashi
[E-MAIL ADDRESS DELETED]
2014年 9月 26日 (金) 18:49:40 JST
小林 (koichik) です。
Jarの中にディレクトリエントリがありませんね。
通常Jarコマンドで作成したJarには、
META-INF/
sample/
sample/batch/
sample/batch/logic/
といったディレクトリを表現するエントリ(末尾がスラッシュ)が含まれます。
この場合はルートパッケージに相当するsample/batch/が無いために
「ルートパッケージ(sample.batch)に対応するリソースがクラスパスから見つかりませんでした。」
という警告が出力されています。
もしEclipseでJarファイルを作成しているなら、「Add directory entries」という
チェックボックスをオンにしてJarを作り直してください。
それ以外の方法で作成している場合は、その方法でディレクトリエントリを
作成する設定等を調べてJarを作り直してください。
2014年9月26日 18:09 <situmon0926 @ inter7.jp>:
> 小林 (koichik)様
> ご返信ありがとうございます。
> 申し訳ありません。
> メッセージが誤っておりました。見つからないのは「SampleLogic」です。
> Smart Deploy想定でdiconに「SampleLogic」の定義は書いておりません。
>
> 実際の出力ログ、jarコマンド出力結果、diconファイルに関して以下へ記載いた
> します。
> 長文となります。
>
> * ログ内容
> ----------------------------
>
> INFO 2014-09-26 17:45:07,158 [main] s2-frameworkのバージョンは2.4.47です
> 。
> INFO 2014-09-26 17:45:07,161 [main] s2-extensionのバージョンは2.4.47です
> 。
> INFO 2014-09-26 17:45:07,163 [main] s2-tigerのバージョンは2.4.47です。
>
> DEBUG 2014-09-26 17:45:07,259 [main] 環境変数#Envにファイル(env.txt)から
> 値(product)が設定されました
> DEBUG 2014-09-26 17:45:07,381 [main] S2Containerを作成します。path=coold
> eploy.dicon
> DEBUG 2014-09-26 17:45:07,481 [main] S2Containerを作成しました。path=coo
> ldeploy.dicon
> DEBUG 2014-09-26 17:45:07,498 [main] S2Containerを作成します。path=app.d
> icon
> DEBUG 2014-09-26 17:45:07,507 [main] S2Containerを作成します。path=aop.d
> icon
> DEBUG 2014-09-26 17:45:07,568 [main] S2Containerを作成しました。path=aop
> .dicon
> DEBUG 2014-09-26 17:45:07,569 [main] S2Containerを作成しました。path=app
> .dicon
> DEBUG 2014-09-26 17:45:07,569 [main] S2Containerを作成します。path=coold
> eploy-autoregister.dicon
> DEBUG 2014-09-26 17:45:07,576 [main] S2Containerを作成します。path=conve
> ntion.dicon
> DEBUG 2014-09-26 17:45:07,611 [main] S2Containerを作成しました。path=con
> vention.dicon
> DEBUG 2014-09-26 17:45:07,611 [main] S2Containerを作成します。path=custo
> mizer.dicon
> DEBUG 2014-09-26 17:45:07,617 [main] S2Containerを作成します。path=defau
> lt-customizer.dicon
> DEBUG 2014-09-26 17:45:07,624 [main] S2Containerを作成します。path=std-c
> ustomizer.dicon
> DEBUG 2014-09-26 17:45:07,660 [main] S2Containerを作成しました。path=std
> -customizer.dicon
> DEBUG 2014-09-26 17:45:07,673 [main] S2Containerを作成しました。path=def
> ault-customizer.dicon
> DEBUG 2014-09-26 17:45:07,675 [main] S2Containerを作成しました。path=cus
> tomizer.dicon
> DEBUG 2014-09-26 17:45:07,676 [main] S2Containerを作成します。path=creat
> or.dicon
> DEBUG 2014-09-26 17:45:07,741 [main] S2Containerを作成しました。path=cre
> ator.dicon
> DEBUG 2014-09-26 17:45:07,745 [main] S2Containerを作成しました。path=coo
> ldeploy-autoregister.dicon
> WARN 2014-09-26 17:45:07,774 [main] ルートパッケージ(sample.batch)に対応
> するリソースがクラスパスから見つかりませんでした。
> WARN 2014-09-26 17:45:07,783 [main] ルートパッケージ(sample.batch)に対応
> するリソースがクラスパスから見つかりませんでした。
> INFO 2014-09-26 17:45:07,785 [main] Running on [ENV]product, [DEPLOY
> MODE]Cool Deploy
> Exception in thread "main" org.seasar.framework.container.ComponentNotFo
> undRuntimeException: [ESSR0046]コンポーネント(interface sample.batch.log
> ic.SampleLogic)が見つかりません
> at
>>org.seasar.framework.container.impl.S2ContainerBehavior$DefaultProvider.acquireFromGetComponentDef(S2ContainerBehavior.java:165)
> at
>>org.seasar.framework.container.impl.S2ContainerBehavior$DefaultProvider.acquireFromGetComponent(S2ContainerBehavior.java:158)
> at
>>org.seasar.framework.container.impl.S2ContainerBehavior.acquireFromGetComponent(S2ContainerBehavior.java:62)
> at
>>org.seasar.framework.container.impl.S2ContainerImpl.getComponent(S2ContainerImpl.java:124)
> at
>>org.seasar.framework.container.SingletonS2Container.getComponent(SingletonS2Container.java:43)
> at sample.main.SampleBachMain.execute(SampleBachMain.java:25)
> at sample.main.SampleBachMain.main(SampleBachMain.java:15)
>
> =================================================
>
> * jar -tf 出力結果
> ----------------------------
>
> META-INF/MANIFEST.MF
> sample/batch/logic/SampleLogic.class
> sample/batch/logic/impl/SampleLogicImpl.class
> sample/main/SampleBachMain.class
>
> * クラスパスに通しているresourceファイル
> ** app.dicon
> -------------------------
> <?xml version="1.0" encoding="Shift_JIS"?>
> <!DOCTYPE components PUBLIC "-//SEASAR2.1//DTD S2Container//EN"
> "http://www.seasar.org/dtd/components21.dtd">
> <components>
> <include path="aop.dicon"/>
> </components>
>
> ** convention.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>
> <component
> class="org.seasar.framework.convention.impl.NamingConventionImpl">
> <initMethod name="addRootPackageName">
> <arg>"sample.batch"</arg>
> </initMethod>
> </component>
> <component
>>class="org.seasar.framework.convention.impl.PersistenceConventionImpl"/>
> </components>
> ** creator.dicon
> seasarのアーカイブ含まれるファイルそのまま
> ** customizer.dicon
> seasarのアーカイブ含まれるファイルそのまま
> ** env.txt
> ** log4j.properties
>
> ** s2container.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 condition="#ENV == 'ut'" path="warmdeploy.dicon"/>
> <include condition="#ENV == 'ct'" path="hotdeploy.dicon"/>
> <include condition="#ENV != 'ut' and #ENV != 'ct'"
> path="cooldeploy.dicon"/>
> </components>
>
>
>
>
>
>>小林 (koichik) です。
>
>>実行時のログを見せてもらえますか?
>
>>見つからないのはSampleBatchMainですが、
>>これをSampleLogicImplにDIしてるのでしょうか?
>>だとすると、SampleBatchMainはdiconでどのように定義
>>しているのでしょうか? (diconを見せてもらうのが早そう)
>
>>あと、jar tf xxx.jar で出力される内容も見せてください。
>
>
> _______________________________________________
> Seasar-user mailing list
> Seasar-user @ ml.seasar.org
> https://ml.seasar.org/mailman/listinfo/seasar-user
Seasar-user メーリングリストの案内