IDEA中的maven工程老是加载不到类路径下的配置文件
错误提示:
class path resource [src/bean.xml] cannot be opened because it does not exist;
情景:
使用maven构建spring项目,在pom中写好了依赖的坐标,创建UserDao接口和UserDaoImp实现类,通过ClassPathXmlApplicationContext创建核心容器,指定配置参数bean.xml的路径,bean.xml是放在src下。接着运行main方法,报错提示找不到bean.xml。
分析:
检查了一遍bean.xml的名称正确,Project Structure中也没任何感叹号,奇怪,ClassPathXmlApplicationContext明确是在类路径下寻找bean.xml文件,且bean.xml也是放在src下了,为什么还是提示没有该文件存在呢。
解决:
最后,想到maven工程的类路径问题,接着把bean.xml移到resources目录下,运行正常了,意思就是ClassPathXmlApplicationContext在类路径下寻找到了该bean.xml文件。那可以说明,直接把bean.xml放在src目录,并不是放在类路径下。
错误截图
把bean.xml直接放在src根目录,翻译后的类路径目录
把bean.xml放在resource目录下,翻译后的类路径目录
小结
回顾下,maven工程翻译后的目录与在IDEA目录做对比,有什么变化呢。同时,根据bean.xml放在src根目录下和放在resource目录下作对比,可以发现,只有放在resource目录下的文件翻译后,才会被放在class目录下。
补充:
Web 工程和其编译结果的目录结构对比见下图: