2013-06-11 44 views
4

我對春天的上下文有非常奇怪的問題。上下文不存在

public static void main(String[] args) { 


    File file = new File("/home/user/IdeaProjects/Refactor/src/spring-cfg.xml"); 
    System.out.println("Exist "+file.exists()); 
    System.out.println("Path "+file.getAbsoluteFile()); 

    ApplicationContext context = new ClassPathXmlApplicationContext(file.getAbsolutePath()); 

顯示在控制檯上:

Exist true 
Path /home/user/IdeaProjects/Refactor/src/spring-cfg.xml 

Exception in thread "main" org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [home/user/IdeaProjects/Refactor/src/spring-cfg.xml]; nested exception is java.io.FileNotFoundException: class path resource [home/user/IdeaProjects/Refactor/src/spring-cfg.xml] cannot be opened because it does not exist 

回答

0

從異常的信息是正確的,/home/user/IdeaProjects/Refactor/src/spring-cfg.xml不是classpath中資源(看起來像你的機器的規則路徑)。

我會建議使用:ClassPathXmlApplicationContext("classpath:spring-cfg.xml")作爲你的配置xml看起來像在你的源文件夾。

3

您試圖加載它,就好像/home/user/IdeaProjects/Refactor/src/spring-cfg.xml是類路徑上的一個資源 - 它不是,它只是一個常規文件。嘗試使用FileSystemXmlApplicationContext來代替...或者指定一個真正的類路徑資源,例如只要spring-cfg.xml假設你的src目錄在你的類路徑中。

2

這不是很奇怪。您正嘗試從不存在的文件中讀取上下文。

ClassPathXmlApplicationContext,如其名稱所示,不使用該路徑作爲絕對路徑,但它在類路徑中尋找。您應該使用

ApplicationContext context = new ClassPathXmlApplicationContext("/spring-cfg.xml"); 

注意:這不會從src而是從編譯的類(它應該已經複製到在編譯)讀取文件。

相關問題