7

Spring Data JPA を使用していますが、奇妙ですが、(デプロイ中に) テスト ファイルをスキャンしようとするため、エラーが発生します。

java.lang.ClassNotFoundException: org.junit.runner.RunWith
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1678)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1523)
...
WARN : org.springframework.core.type.classreading.AnnotationAttributesReadingVisitor - Failed to classload      type while reading annotation metadata. This is a non-fatal error, but certain annotation metadata may be     unavailable.

classnotfoundexception は、テストの依存関係が Maven の「テスト」スコープにあるためです。

しかし、私の質問は、なぜテスト フォルダーをスキャンしているのかということです。(/src/main/test)。

コンテキスト構成は次のとおりです。

 <jpa:repositories base-package="com.domain.repository" />

私が間違っていることを教えてもらえますか?私の .classpath コンテンツは次のとおりです。

<classpathentry kind="src" output="target/classes" path="src/main/java"/>
<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources"/>
<classpathentry kind="src" output="target/test-classes" path="src/test/java"/>
<classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources"/>
...

ご協力いただき、誠にありがとうございます。

4

2 に答える 2

2

しかし、私の質問は、なぜテスト フォルダーをスキャンしているのかということです。(/src/main/test) .

コンテキスト構成は次のとおりです。

<jpa:repositories base-package="com.domain.repository" />

正確に言うと、Spring がこのフォルダーをスキャンしているとは思いません。結局のところ、それはあなたのソース フォルダーです。展開されたパッケージ構造だけを見ているだけで、問題の原因はそれと関係があるのではないかと思います。

私は同じ問題に遭遇しましたが、Spring に固有のものではなく、Eclipse の誤ったデプロイメント構成が原因でした。src/test/javaサーバーを起動したときにすべてのテスト ファイル (もちろん、対応するパッケージ構造を持っていた) が存在するように、テスト クラスをターゲットの展開パッケージに展開するように Eclipse を構成しました。ただし、投稿したスニペットから判断すると、.classpath展開から明示的に除外しているようです。

ただし、クラス ファイルが展開に忍び込む可能性のある方法は他にもあります。テスト クラスが実際にデプロイされたパッケージに存在しないことを確認できましたか? それらは、設定した他のプロセス (おそらくFileSynchプラグイン) によって同期されている可能性がありますか?

また、他の基本パッケージをスキャンするための構成を含む他の Spring コンテキスト ファイルはありますか?

問題の解決に役立つように、Eclipse 構成とテスト サーバーへのデプロイ方法についてさらに詳細を追加することができます。

于 2012-05-31T08:31:42.580 に答える
0

Springのバグ「疑似機能」のようです:

https://jira.springsource.org/browse/SPR-9233

アプリケーションがほとんど問題ない場合でも、実行時に注釈のクラスが見つからない場合に警告します。

于 2012-05-14T19:02:40.787 に答える