Spring项目同包下存在applicationContext.xml却提示文件不存在如何解决
问题原因
ClassPathXmlApplicationContext默认从类路径根目录加载配置文件,你将applicationContext.xml放在HelloSpringApp类所在的包下,不属于类路径根目录,直接写文件名会找不到对应资源。
你收到的报错翻译为:
线程"main"异常 org.springframework.beans.factory.BeanDefinitionStoreException: 解析类路径资源[applicationContext.xml]的XML文档时发生IO异常;嵌套异常是 java.io.FileNotFoundException: 类路径资源[applicationContext.xml]无法打开,因为它不存在。
解决方法
- 方法1:指定配置文件的完整包路径
假设HelloSpringApp所在包为com.yourpackage,修改加载代码为:
注意包路径用斜杠ClassPathXmlApplicationContext context= new ClassPathXmlApplicationContext("com/yourpackage/applicationContext.xml");/分隔,不要用点.。 - 方法2:将配置文件放到类路径根目录(推荐)
如果是Maven/Gradle项目,直接把applicationContext.xml放到src/main/resources目录下,项目编译后该目录下的文件会自动生成到类路径根目录,原代码不需要修改即可正常运行。 - 方法3:相对于当前类加载配置
直接从HelloSpringApp所在的包路径加载配置,代码修改为:ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(HelloSpringApp.class.getResource("applicationContext.xml").toString());
验证方式
编译项目后打开项目输出目录(通常是target/classes或者out/production/项目名),确认applicationContext.xml的实际存放路径,代码中填写的路径需要和该路径完全匹配。
内容的提问来源于stack exchange,提问作者Shree
相关产品推荐
相关产品推荐

