2012-04-29 49 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配置和要部署到測試服務器,以幫助解決問題。