2017-04-02 71 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想要保留在指定的路径 –

相关问题