2017-04-02 72 views
1

問題讀取XML文件:爲什麼我不使用的FileSystemResource類

我創建了一個程序,將使用的FileSystemResource從指定的路徑讀取我的applicationContext.xml文件並調用弘。 我無法理解爲什麼我收到的錯誤是這樣的:

任何人都可以指導我如何解決這個問題:

下面是代碼所示

public static void main(String[] args) { 
    Resource res=null; 
    BeanFactory factory=null; 
    Object obj=null; 
    WishMessageGenerator generator=null; 
    //Locate Cfg File 
    res=new FileSystemResource("com/jc/cfgs/applicationContext.xml"); 
    //Create IOC Container  
    factory=new XmlBeanFactory(res); 
    //getBean Class Object  
    obj=factory.getBean("wish"); 
    //TypeCasting  
    generator=(WishMessageGenerator)obj; 
    //Invoke Businees Method   
    System.out.println("Message ="+generator.wishMsg("jalaj")); 

} 

} 

錯誤:

Exception in thread "main" org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from file [/Users/mansi/Desktop/springapp/SpringApp4/com/jc/cfgs/applicationContext.xml]; nested exception is java.io.FileNotFoundException: com/jc/cfgs/applicationContext.xml (No such file or directory) 
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:344) 
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:304) 
at org.springframework.beans.factory.xml.XmlBeanFactory.<init>(XmlBeanFactory.java:79) 
at org.springframework.beans.factory.xml.XmlBeanFactory.<init>(XmlBeanFactory.java:67) 
at com.jc.test.Test.main(Test.java:20) 
Caused by: java.io.FileNotFoundException: com/jc/cfgs/applicationContext.xml (No such file or directory) 
at java.io.FileInputStream.open(Native Method) 
at java.io.FileInputStream.<init>(FileInputStream.java:138) 
at org.springframework.core.io.FileSystemResource.getInputStream(FileSystemResource.java:115) 
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:330) 
... 4 more 

DirectoryStructure

回答

0

如果資源位於類路徑中,則不應使用旨在指定絕對路徑的FileSystemResource

ClassPathResource那也是一個org.springframework.core.io.Resource執行更合適。

在實際的代碼中,src文件夾在類路徑中,所以這應該是罰款:

res = new ClassPathResource("com/jc/cfgs/applicationContext.xml"); 
+0

如果我從classPath.Then刪除applicationContext.xml中看到上面DirectoryStructure.I已完成編輯 –

+0

爲什麼要刪除它?你應該根據運行環境而不是所有的彈簧配置來外部化信息。 – davidxxx

+0

我不想保留在classPath.I想要保留在指定的路徑 –

相關問題