統合テストでいくつかの Spring Bean にアクセスするために Junit (SpringJUnit4ClassRunner) を実行しています。
@ContextConfiguration を介していくつかの xml ファイルをロードする必要があります。これらのファイルは、jar ファイルを介して直接 Tomcat への外部アプローチによってデプロイされます。-- つまり、これらのファイルは次の場所にあります。
my_tomcat_home_path/webapps//WEB-INF/lib/external.jar
そのような
my_tomcat_home_path/webapps//WEB-INF/lib/external.jar/a.suffix.xml
my_tomcat_home_path/webapps//WEB-INF/lib/external.jar/b.suffix.xml
...
Tomcat パスを Eclipse クラスパスに入れ、それを Eclipse クラスパスに含めると、JUnit の次のコードが機能します
@ContextConfiguration(locations = {"classpath:*suffix.xml"})
ただし、それをEclipseクラスパスに入れないと(jarファイル名が時々変わる可能性があるため)、次のコードは機能しません(ただし、Tomcatホーム "" はまだEclipseクラスパスにあります):
@ContextConfiguration(locations = {"classpath:/webapps/<my_app>/WEB-INF/lib/external.jar/*suffix.xml"})
誰か助けてくれませんか?
どうもありがとう!!
追加試行 -------------------------------
external.jar 自体を使用する代わりに、jar 内のパッケージ パスを使用しようとしました。コードは次のようになります。
@ContextConfiguration(locations = {"classpath:/webapps/<my_app>/WEB-INF/lib/path_inside_the_external_jar/*suffix.xml"})
この場合、「ファイルが存在しないため XML が見つかりません」という問題は発生しなくなりました。代わりに、次のエラーが表示されます。
Caused by: java.io.FileNotFoundException: class path resource [webapps/my_app/WEB-INF/lib/path_inside_the_external_jar/] cannot be resolved to URL because it does not exist
at org.springframework.core.io.ClassPathResource.getURL(ClassPathResource.java:163)
at org.springframework.core.io.support.PathMatchingResourcePatternResolver.isJarResource(PathMatchingResourcePatternResolver.java:406)
at org.springframework.core.io.support.PathMatchingResourcePatternResolver.findPathMatchingResources(PathMatchingResourcePatternResolver.java:338)
at org.springframework.core.io.support.PathMatchingResourcePatternResolver.getResources(PathMatchingResourcePatternResolver.java:276)
at org.springframework.context.support.AbstractApplicationContext.getResources(AbstractApplicationContext.java:1018)
at org.springframework.context.support.GenericApplicationContext.getResources(GenericApplicationContext.java:192)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:177)
... 23 more