在运行SSM项目源码进行单元测试时遇到了以下问题:
java.lang.IllegalStateException: Failed to load ApplicationContext
…
…
Caused by: org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [spring-beans.xml]; nested exception is java.io.FileNotFoundException: class path resource [spring-beans.xml] cannot be opened because it does not exist
- 首先推测是路径产生问题或者文件命名产生问题,检验web.xml中contextConfigLocation的配置如下
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value><!-- 项目启动会加载这个配置文件 -->
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
没有问题.
2. 然后检验applicationContext.xml文件的存储路径,如下图所示
同样符合SSM规范。
3. 这时考虑在java程序中,一个文件要使用到另一个文件,其路径完全并不是在开发程序目录中的相对路径,而是在编译的输出目录下的相对路径,这路径可能会有偏差,甚至输出目录下根本没有这个文件。查看target文件夹下是否有applicationContext.xml文件,如果没有,将applicationContext.xml文件复制到target文件下,如下图所示
**注意:applicationContext文件能够使用需要mapper文件,dbconfig.properties,mybatis-config.xml文件支持,如果你的target文件夹下没有以上文件,同样需要复制一份。**然后运行时问题解决。