IDEA 中读取不了配置文件以及ClassPathXmlApplicationContext与FileSystemXmlApplicationContext
2017-07-04 16:36
615 查看
在学习Spring的时候(看的《Spring4.x企业应用开发实战》),书上用的IDE 是 Myeclipse,这里用的是IDEA。在编译:
提示错误
异常说的比较清楚,指定路径的文件不存在。怎么可能不存在呢,这里用File的输出流测试,打印到控制台上没有问题,说明路径是没有问题的。
然后修改成了
是可以访问到的。
target文件夹就是存放class类的文件夹问价相应目录下,并没有beans.xml文件。IDEA在源码目录下(src/main/java),只会把.java文件编译成.class文件,存到classes文件夹下,其他的配置文件是不会做处理的(MyEclipse会把配置文件复制到相应的包下)。但可以在resources文件夹下,创建相应的包目录,放到相应的目录下,IDEA就会将配置文件,复制到classes文件夹下,也就可以访问到了。
这里从类路径加载文件只需要写指定的包路径以及文件名即可。如:
String configPath = "com/baobaotao/advice/beans.xml"; ApplicationContext ctx = new ClassPathXmlApplicationContext(configPath);
提示错误
Exception in thread "main" org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [com/baobaotao/advice/beans.xml]; nested exception is java.io.FileNotFoundException: class path resource [com/baobaotao/advice/beans.xml] cannot be opened because it does not exist 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.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:181) at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:217) at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:188) at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:252) 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:129) at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:614) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:515) at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139) at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83) at com.baobaotao.advice.TestThrowAdvice.main(TestThrowAdvice.java:14) Caused by: java.io.FileNotFoundException: class path resource [src/main/java/com/baobaotao/advice/beans.xml] cannot be opened because it does not exist at org.springframework.core.io.ClassPathResource.getInputStream(ClassPathResource.java:172) at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:330) ... 13 more
异常说的比较清楚,指定路径的文件不存在。怎么可能不存在呢,这里用File的输出流测试,打印到控制台上没有问题,说明路径是没有问题的。
然后修改成了
String configPath = "src/main/java/com/baobaotao/advice/beans.xml"; ApplicationContext ctx = new FileSystemXmlApplicationContext(configPath);
是可以访问到的。
ClassPathXmlApplicationContext
ClassPathXmlApplicationContext 默认从类路径加载配置文件,在类路径文件夹下。这里用的maven的文件夹结构,如下图:target文件夹就是存放class类的文件夹问价相应目录下,并没有beans.xml文件。IDEA在源码目录下(src/main/java),只会把.java文件编译成.class文件,存到classes文件夹下,其他的配置文件是不会做处理的(MyEclipse会把配置文件复制到相应的包下)。但可以在resources文件夹下,创建相应的包目录,放到相应的目录下,IDEA就会将配置文件,复制到classes文件夹下,也就可以访问到了。
这里从类路径加载文件只需要写指定的包路径以及文件名即可。如:
String configPath = "com/baobaotao/advice/beans.xml";
FileSystemXmlApplicationContext
FileSystemXmlApplicationContext 默认从文件系统加载配置文件,可使用相对路径或者绝对路径进行访问,也就理所当然的会访问到相应的文件。这里从文件系统访问路径需要从根路径开始写完整文件相对路径,也就是从src开始写,如:String configPath = "src/main/java/com/baobaotao/advice/beans.xml";
相关文章推荐
- java中读取配置文件的方法fileSystemXmlapplicationContext与classPathXmlApplicationContext
- Spring ClassPathXmlApplicationContext和FileSystemXmlApplicationContext读取配置文件的方法
- Eclipse中通过FileSystemXmlApplicationContext读取不到配置文件问题
- ClassPathXmlApplicationContext方式读取配置文件
- 关于ClassPathXmlApplicationContext以及FileSystemXmlApplicationContext的问题
- Spring中ClassPathXmlApplication与FileSystemXmlApplicationContext的区别以及ClassPathXmlApplicationContext 的具体路径
- Spring ClassPathXmlApplicationContext和FileSystemXmlApplicationContext
- Spring中关于ClassPathXmlApplicationContext和FileSystemXmlApplicationContext的路径设置
- spring中ClassPathXmlApplicationContext和FileSystemXmlApplicationContext的路径问题
- ClassPathXmlApplicationContext()与FileSystemXmlApplicationContext() 区别
- JunitTest拿spring容器bean的2种方式[Spring ClassPathXmlApplicationContext和FileSystemXmlApplicationContext]
- FileSystemXmlApplicationContext与ClassPathXmlApplicationContext
- ClassPathXmlApplicationContext 和FileSystemXmlApplicationContext的区别
- ClassPathXmlApplicationContext 和FileSystemXmlApplicationContext的区别及用法
- Spring ClassPathXmlApplicationContext和FileSystemXmlApplicationContext
- ClassPathXmlApplicationContext 和FileSystemXmlApplicationContext
- ClassPathXmlApplicationContext 和FileSystemXmlApplicationContext的区别
- ClassPathXmlApplicationContext和FileSystemXmlApplicationContext的路径设置、classpath
- FileSystemXmlApplicationContext、ClassPathXmlApplicationContext和XmlWebApplicationContext简介
- ClassPathXmlApplicationContext, FileSystemXmlApplicationContext和XmlWebApplicationContext