1

統合テストでいくつかの 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
4

1 に答える 1