问题:
严重: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [beans.xml]; nested exception is java.io.FileNotFoundException: class path resource [beans.xml] cannot be opened because it does not exist
说明:
好久以前自己写的ssh整合的项目,今天打开出现这样的问题,说beans.xml找不到了,不存在,首先声明,beans.xml我放在了src的目录下了,然后web.xml 中是这样写的
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:beans.xml</param-value>
</context-param>
相信大家也都是这样配置的吧,既然路径文件都在,而启动tomcat却说找不着,无语了。
下面说说我是怎么解决的,其实很简单。首先打开你的myeclipse的工作空间即项目所在的文件夹workplace然后打开你项目的WebRoot文件夹,然后接着你会看见里面有个WEB-INF的文件夹,打开它,里面又有一个classes的文件夹,打开后你会发现beans.xml没有了,这就是问题的所在,所以只要把beans.xml文件复制到这里就可以了,那么beans.xml在哪里有呢,就在项目src的目录下。
下面来探讨一下为什么src中有了beans.xml 了,二classes文件夹中没有就会报错呢,这是因为我们正常的程序经过编译后生产了class文件就放在classes文件夹下,也就是说最后是运行classes中是文件,这就必须要保证所有的配置文件都要在classes有一份,否则tomcat运行时就会报找不到配置文件的错误。当然,这里我只解释了我所遇到的问题,还有别的可能,比如你路径写错了,或是文件确实被你删除了,不存在了