2010-10-11 28 views
24

我有一個Spring MVC應用程序,並與JUnit測試與文件的applicationContext.xml相結合的問題。春天 - applicationContext.xml中不能打開,因爲它不存在

在我的JUnit測試類我寫:

final ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); 
service = (TestServiceImpl) context.getBean("testServiceImpl"); 

我得到的錯誤是aplicationContect.xml無法找到:

org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [applicationContext.xml]; nested exception is java.io.FileNotFoundException: class path resource [applicationContext.xml] cannot be opened because it does not exist 

但它在WEB-INF文件夾中退出。在這裏,您可以使用applicationContext.xml文件查看我的項目樹: http://img28.imageshack.us/img28/2576/treexp.png

那麼,這裏有什麼問題?爲什麼該文件不適用於JUnit測試?

預先感謝您&問候。

回答

32

你應該保持在另一個文件夾中,標記爲「源」(就像「SRC」或「資源」)的春季檔。

WEB-INF是不是一個源文件夾,因此它不會被包含在類路徑(即JUnit會不尋找任何那裏)。

+0

謝謝,先生。 :) – Lucas 2017-08-27 15:03:58

7

ClassPathXmlApplicationContext不會在您的WEB-INF文件夾中找到applicationContext.xml,它不在類路徑中。在運行測試時,您可以將應用程序上下文複製到您的類路徑中(可以將它放在src/test/resources之下,並讓Maven將其複製)。

7

我得到了同樣的錯誤。 我解決了它將文件applicationContext.xml移動到src文件夾的子文件夾中的

子文件夾。例如:

context = new ClassPathXmlApplicationContext("/com/ejemplo/dao/applicationContext.xml"); 
+0

我試過這個,但它沒有幫助。 – user657592 2014-01-28 13:23:14

+0

爲我完美工作! – specialk1st 2016-10-14 15:58:54

0

我把applicationContext.xml中在src /主/ java文件夾,它的工作

4

如果您使用的是Maven,創建一個主目錄中稱爲resources目錄,然後將您的applicationContext.xml進去。

從Java代碼調用:

ApplicationContext appCtx = new ClassPathXmlApplicationContext("applicationContext.xml"); 
4

我也發現了這個問題。解決這個問題的方法是將文件複製/粘貼到任何位置並運行一次一個文件。最後它編譯併成功運行,然後刪除不必要的。在我的情況正確的地方是: enter image description here

這是在/ src /路徑下(我使用Intellij Idea作爲IDE)。其他Java源文件位於/ SRC/COM /包/路徑

希望它helpes。

0

我解決它在src文件夾移動文件彈簧context.xml中。 ApplicationContext context = new ClassPathXmlApplicationContext(「spring-context.xml」);

0

在Spring中,所有的源文件都在src/main/java裏面。 同樣,資源通常保存在src/main/resources中。 因此,請將您的彈簧配置文件保存在資源文件夾中。

確保您的src/main/resources文件內還有ClassPath條目。

在.classpath中檢查以下兩行。如果他們缺少添加它們。

<classpathentry path="src/main/java" kind="src"/> 
<classpathentry path="src/main/resources" kind="src" /> 

所以,如果你有一切就位,下面的代碼應該工作。

ApplicationContext ctx = new ClassPathXmlApplicationContext(「Spring-Module.xml」);

0

請做這個代碼 - 它的工作

AbstractApplicationContext context= new ClassPathXmlApplicationContext("spring-config.xml"); 

O/W:刪除main方法的類,然後重新創建在重新創建,請取消選中繼承的抽象方法的工作

0

這發生在我身上,不時使用eclipse時出現的問題 由於某些原因(eclipse bug ??)「excluded」參數獲得值*。*(構建我的資源文件夾的路徑)

只需將排除項更改爲無(參見紅色矩形vs綠色矩形) 我希望這可以幫助未來的人,因爲這是非常令人沮喪的發現。

excluded

相關問題