2013-01-23 46 views
1

我試圖做下面的Spring「Hello World」示例,它使用FileSystemXmlApplicationContext作爲ApplicationContext接口的實現。Spring FileSystemXmlApplicationContext找不到bean配置文件並進入錯誤

此實現必須採取XML bean配置作爲構造函數的參數,像前面例子中的完整路徑:

ApplicationContext context = new FileSystemXmlApplicationContext("C:/Users/ZARA/workspace/HelloSpring/src/Beans.xml"); 

我使用Linux和我的豆子的配置文件是以下路徑: /home/andrea/Documents/ws/myapplicationcontextexample/src/main/java/Beans.xml,所以在我的代碼有:

ApplicationContext context = new FileSystemXmlApplicationContext("/home/andrea/Documents/ws/myapplicationcontextexample/src/main/java/Beans.xml"); 

的問題是,當我嘗試運行我的應用程序,在STS \ Eclipse控制檯我有以下錯誤消息(似乎沒有找到該文件):

INFO: Loading XML bean definitions from file [/home/andrea/Documents/ws/myapplicationcontextexample/home/andrea/Documents/ws/myapplicationcontextexample/src/main/java/Beans.xml] 
Exception in thread "main" org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from file [/home/andrea/Documents/ws/myapplicationcontextexample/home/andrea/Documents/ws/myapplicationcontextexample/src/main/java/Beans.xml]; nested exception is java.io.FileNotFoundException: home/andrea/Documents/ws/myapplicationcontextexample/src/main/java/Beans.xml (File o directory non esistente) 
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:341) 
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:302) 
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:174) 
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:209) 
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:180) 
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:243) 
    at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:127) 
    at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:93) 
    at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:131) 
    at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:522) 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:436) 
    at org.springframework.context.support.FileSystemXmlApplicationContext.<init>(FileSystemXmlApplicationContext.java:140) 
    at org.springframework.context.support.FileSystemXmlApplicationContext.<init>(FileSystemXmlApplicationContext.java:84) 
    at org.andrea.myexample.myapplicationcontextexample.MainApp.main(MainApp.java:14) 
Caused by: java.io.FileNotFoundException: home/andrea/Documents/ws/myapplicationcontextexample/src/main/java/Beans.xml (File o directory non esistente) 
    at java.io.FileInputStream.open(Native Method) 
    at java.io.FileInputStream.<init>(FileInputStream.java:138) 
    at org.springframework.core.io.FileSystemResource.getInputStream(FileSystemResource.java:113) 
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:328) 
    ... 13 more 

爲什麼?我該如何解決?

TNX

安德烈

+2

它看起來它的使用你的主目錄,然後追加額外的路徑信息,它像。嘗試更改代碼以讀取:ApplicationContext context = new FileSystemXmlApplicationContext(「src/main/java/Beans.xml」); – CodeChimp

+0

好的,現在工作得很好......但爲什麼自動使用已經定義了這個路徑:「/ home/andrea/Documents/ws/myapplicationcontextexample /」? – AndreaNobili

+1

在java中,有一個系統級屬性,我相信它被稱爲「user.dir」,它是您的應用程序的當前工作目錄。在Eclipse的情況下,我相信它默認爲項目的文件夾。我相信你可以在Eclipse啓動設置中修改starup目錄。 – CodeChimp

回答

8

注意:平原路總是被解釋爲相對於當前VM工作目錄,即使他們開始用斜槓。 (這與Servlet容器中的語義一致。)使用明確的「file:」前綴來強制執行絕對文件路徑。

參考:http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/context/support/FileSystemXmlApplicationContext.html

+0

gr8它在Ubuntu上運行。早些時候我想知道爲什麼FileSystemXmlApplicationContext在Windows上工作,但不在Linux上! – Vijay

相關問題