为什么我不使用的FileSystemResource类
问题描述:
问题读取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
答
如果资源位于类路径中,则不应使用旨在指定绝对路径的FileSystemResource
。
ClassPathResource
那也是一个org.springframework.core.io.Resource
执行更合适。
在实际的代码中,src
文件夹在类路径中,所以这应该是罚款:
res = new ClassPathResource("com/jc/cfgs/applicationContext.xml");
如果我从classPath.Then删除applicationContext.xml中看到上面DirectoryStructure.I已完成编辑 –
为什么要删除它?你应该根据运行环境而不是所有的弹簧配置来外部化信息。 – davidxxx
我不想保留在classPath.I想要保留在指定的路径 –