2012-04-29 4 views
7

테스트 폴더에있는 파일을 검색하고 오류가 발생 테스트 파일, 그것은 이상하다하지만 (배포시) 스캔을 시도 :스프링 데이터 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/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"/> 
... 

정말 고맙습니다.

+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의 잘못된 배치 구성으로 인해 발생했습니다. 필자는 이클립스가 src/test/java에있는 테스트 클래스를 대상 전개 패키지에 배치하도록 구성했다. 그래서 서버를 시작할 때 존재하는 모든 테스트 파일들 (물론 해당 패키지 구조를 가졌다). 그러나 게시 한 .classpath 스 니펫으로 판단하면 배치되지 않도록 명시 적으로 명시하고 있습니다.

그럼에도 불구하고 클래스 파일이 배포에 들어갈 수있는 다른 방법이 있습니다. 테스트 클래스가 실제로 배포 된 패키지에 없다는 것을 확인할 수 있었습니까? 그들은 당신이 설정 한 다른 프로세스 (거기에 FileSynch 어쩌면)에 의해 거기에서 동기화되고있을 수 있습니까?

또한 다른 기본 패키지를 검사하는 구성을 가진 다른 Spring 컨텍스트 파일이 있습니까?

Eclipse 구성에 대한 세부 사항을 추가하고 테스트 서버에 전개하여 문제점을 해결할 수 있습니다.

관련 문제