记录一次mac+idea+springmvc开发的applicationContext.xml读取文件找不到异常处理
2017-09-12 15:36
786 查看
普通的springmvc项目,不过是用mac+idea开发的,然后平时我很少用main方法来测试,都是通过controller测的调用,用postman工具来测试,而不会用main()方法测试。而最近公司通过dubbo服务提供RPC的调用,我们作为提供方,自然不会去写controller来调用,而是通过暴露接口的形式给友方调用。
然后自己在测试的时候,因为前辈们已经把applicationContext.xml放置在了WEB-INF文件夹下了,所以我就写了个main方法自测,然后一直报错文件找不到,我的现象是这样的:
配置文件所在目录:
读取配置文件代码如下:
复制文件path,绝对路径读取:
然后自己在测试的时候,因为前辈们已经把applicationContext.xml放置在了WEB-INF文件夹下了,所以我就写了个main方法自测,然后一直报错文件找不到,我的现象是这样的:
配置文件所在目录:
读取配置文件代码如下:
复制文件path,绝对路径读取:
FileSystemXmlApplicationContext context = new FileSystemXmlApplicationContext("/Users/xueqin/yooli/20170913/data-transfer/data-transfer-service/src/main/webapp/WEB-INF/applicationContext.xml");
复制文件相对路径,读取:
FileSystemXmlApplicationContext context = new FileSystemXmlApplicationContext("WEB-INF/applicationContext.xml");
然后结果就是报错,很明显文件找不到;
问题:文件就在路径下放着,但是通过FileSystemXmlApplicationContext就是读取不到。
解决思路:我觉得这是不科学的,于是我用File+FileInputStream来读取这个配置文件:
File f = new File("/Users/xueqin/yooli/20170907/data-transfer/data-transfer-service/src/main/webapp/WEB-INF/applicationContext.xml"); FileInputStream in = new FileInputStream(f);然后发现,文件是可以读取的,并没有报错说文件找不到。
从而可以确定在FileSystemXmlApplicationContext()中传递的参数有问题。
我们都知道如果我们是window那么我的代码应该是这么写的:
public static void main(String[] args) { FileSystemXmlApplicationContext context = new FileSystemXmlApplicationContext("E:\\workspace\\data-transfer\\data-transfer-service\\src\\main\\webapp\\WEB-INF\\applicationContext.xml");
说明我当前的配置文件在E盘中放置。
但是对于mac系统。那么我DEBUG调试发现f的定义和我们传递给FileSystemXmlApplicationContext的参数区别仅仅是,java根据File()生成的文件是有前缀:
file:/Users/xueqin/yooli/20170907/data-transfer/data-transfer-service/src/main/webapp/WEB-INF/applicationContext.xml;
而我们传递的时候没有加。
于是我尝试给加了file:形成file:path这样格式的字符串路径给传递,总于可以成功读取配置文件了,
最后的代码如下:
String path = "file:/Users/xueqin/yooli/20170907/data-transfer/data-transfer-service/src/main/webapp/WEB-INF/applicationContext.xml"; FileSystemXmlApplicationContext context = new FileSystemXmlApplicationContext(path);从而正确获得了context,然后后续的测试水到渠成。
相关文章推荐
- 启动tomcat服务时,报解析/WEB-INF/applicationContext.xml异常或找不到该文件
- 浅谈配置文件:spring-servlet.xml(spring-mvc.xml) 与 applicationContext.xml
- idea里web.xml中的classpath:xml/applicationContext.xml文件路径找不到
- Spring ClassPathXmlApplicationContext和FileSystemXmlApplicationContext读取配置文件的方法
- spring如何从jar中读取applicationContext.xml配置文件?
- Spring配置文件applicationContext.xml 找不到的问题
- Spring 2.0.8 和 2.5 applicationContext.xml 头文件写法 Spring启动异常: cvc-elt.1: Cannot find the declaration of element 'beans'
- spring 配置文件无法加载,junit找不到xml配置文件java.lang.IllegalStateException: Failed to load ApplicationContext
- 读取Spring的配置文件applicationContext.xml几种方法
- spring中遇到的applicationContext.xml (系统找不到指定的文件。)
- IDEA 中读取不了配置文件以及ClassPathXmlApplicationContext与FileSystemXmlApplicationContext
- 读取applicationContext.xml(spring配置文件)文件
- 一个典型的Spring的applicationcontext.xml配置文件
- 加载spring时applicationContext.xml文件出错
- applicationContext.xml配置文件的读取
- Spring配置文件applicationContext.xml(3)开启事务和注解
- Spring配置文件applicationContext.xml(2)之AOP
- applicationContext.xml (系统找不到指定的文件)
- Spring的配置文件,可以用applicationContext.xml+applicationContext.properties
- Hibernate SQL方言 (hibernate.dialect) Spring配置文件applicationContext.xml