2012-04-29 18 views
7

Używam Wiosna danych WZP i to dziwne, ale próbuje skanować (podczas deploy) pliki testowe, co powoduje błąd:Wiosna danych JPA - skanuje pliki w folderze testów

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 jest ponieważ zależności testowe są w zakresie "testowym" w maven.

Ale moje pytanie brzmi: dlaczego skanuje folder testowy? (/ src/main/test).

Konfiguracja kontekst jest następujący:

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

Czy możesz mi powiedzieć, co robię źle? Moja zawartość .classpath jest następująca:

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

Bardzo dziękuję za pomoc w tej sprawie.

+2

Mam ten sam problem w moim projekcie, z wiosną 3.1.1. Czy znalazłeś sposób na jego obejście? – elias

Odpowiedz

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

Nie sądzę, aby Spring skanował ten folder - w końcu jest to folder źródłowy. Patrzy tylko na wdrożoną strukturę pakietów i podejrzewam, że przyczyna problemu ma z tym coś wspólnego.

Napotkano ten sam problem, ale spowodowane było błędną konfiguracją wdrożenia w środowisku Eclipse, a nie czymś specyficznym dla Spring. Miałem Eclipse skonfigurowane do wdrażania moich klas testowych w src/test/java do docelowego pakietu wdrożeniowego, więc wszystkie pliki testowe (które oczywiście miały odpowiednie struktury pakietów), które były obecne podczas uruchamiania serwera. Jednak sądząc po opublikowanym fragmencie .classpath, widzę, że wyraźnie wykluczasz je z wdrożenia.

Istnieją jednak inne sposoby, w jakie pliki klas mogą wkradnąć się do wdrożenia. Czy byłeś w stanie zweryfikować, że klasy testowe w rzeczywistości nie są obecne w wdrożonym pakiecie? Czy mogą być tam zsynchronizowane przez inny proces, który skonfigurowałeś (być może wtyczka FileSynch)?

Masz również inne pliki kontekstowe Spring z konfiguracjami do skanowania innych pakietów bazowych?

Możesz dodać więcej szczegółów na temat konfiguracji Eclipse i sposobu wdrażania na serwerze testowym, aby pomóc rozwiązać problem.