2012-04-29 30 views
7

我使用Spring数据JPA和它的奇怪,但它试图扫描(部署时)测试文件,这将导致一个错误:春数据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 /主/检验)。

上下文配置如下:

<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"/> 
... 

我真的很感谢你对此的帮助。

+2

我有在我的项目同样的问题,春暖花开3.1.1。你找到了解决问题的方法吗? – elias

回答

2

But my question is, why it is scanning test folder? (/src/main/test).

The context configuration is as follows:

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

准确地说,我不认为Spring正在扫描这个文件夹 - 毕竟它是你的源文件夹。这只是看着部署的包装结构,我的怀疑是问题的原因与此有关。

我遇到了同样的问题,但它是由Eclipse中错误的部署配置引起的,而不是Spring特有的。我配置了Eclipse,将src/test/java中的测试类部署到目标部署包,以便在启动服务器时出现所有测试文件(当然有相应的包结构)。但是,根据您发布的.classpath片段判断,我发现您明确排除了它们的部署范围。

不过,还有其他一些方法可以让类文件进入部署。您是否能够验证测试类实际上不在部署的包中?它们是否可以通过您设置的其他一些进程同步(FileSynch也许)?

另外,你有没有其他的配置的Spring上下文文件扫描其他基础包?

你可能会添加一些更多详细的Eclipse配置和要部署到测试服务器,以帮助解决问题。