Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SpringDataJPA-扫描测试文件夹中的文件_Java_Spring_Spring Data_Spring Data Jpa - Fatal编程技术网

Java SpringDataJPA-扫描测试文件夹中的文件

Java SpringDataJPA-扫描测试文件夹中的文件,java,spring,spring-data,spring-data-jpa,Java,Spring,Spring Data,Spring Data Jpa,我使用的是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.load

我使用的是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" />
<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"/>
...

你能告诉我我做错了什么吗?My.classpath内容如下:

 <jpa:repositories base-package="com.domain.repository" />
<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"/>
...

...
非常感谢您的帮助。

这似乎是春季的一个bug“伪特性”:

这会在运行时找不到注释类时发出警告,即使应用程序基本正常

但我的问题是,为什么要扫描测试文件夹?(/src/main/test)

上下文配置如下所示:

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

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

尽管如此,类文件还可以通过其他方式潜入部署中。您是否能够验证测试类实际上不存在于部署的包中?它们是否可以通过您设置的其他进程(可能是文件同步插件)在那里同步

另外,您是否有任何其他Spring上下文文件,其配置可以扫描其他基本包


您可以添加更多关于Eclipse配置的详细信息,以及如何部署到测试服务器以帮助解决此问题。

我的项目spring 3.1.1也遇到了同样的问题。你找到办法了吗?