7

Spring バグシステム ( https://jira.springsource.org/browse/SPR-8551 ) にバグを報告しましたが、何か不足しているかどうかはまだわかりません。

<context:component-scan/>このステートメントの問題を突き止めました。Web アプリケーションの WEB-INF/lib 内の同じ JAR にある次の 2 つのクラスがあるとします (JAR ファイルにはディレクトリ構造があります)。

テスト/TheBean.java:

package test;
@Component
public class TheBean{
}

テスト/BeanSearcher.java:

package test;
public class BeanSearcher{

  public void init(){ 
    AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(); 
    ctx.scan("test"); 
    ctx.refresh(); 
    TheBean b=  ctx.getBean(TheBean.class); 
    // What is the value of b? 
  }
}

jUnit テスト ケースまたは他のタイプのスタンドアロン アプリケーションで実行new BeanSearcher().init()すると、b に TheBean のインスタンスが割り当てられますが、たとえば JSP で実行すると、ctx.getBean()null が返されます。

それで、私は何か間違ったことをしているのですか、それとも何かを考慮していないのですか、これは単なるバグですか...?

編集 2011 年 8 月 8 日: 問題を単純化しようとしたため、うまく機能しているように見えますが、それでも機能させようとすると、OpenCms の初期化で失敗します。現在、動作中のバージョンと動作していないバージョンの違いを探しています。(クラスローダー、異なる JAR 内または直接 WEB-INF/classes 内の関連クラスの ubication、リフレクションを介した呼び出しなど)

4

2 に答える 2

10

私がコメントに書いたように、解決策はここの答えによって与えられます: Spring Annotation-based controllers not working if it is inside jar file

Eclipse でエクスポート ユーティリティを使用して jar ファイルをエクスポートする場合、[ディレクトリ エントリの追加] というオプションがあります。

于 2012-12-24T16:46:28.513 に答える