集成Spring2.5、Hibernate3.3成功之后,打算集成Struts2,于是加入相关包,在web.xml中添加以下代码:
<context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </context-param> <!-- 对Spring容器进行实例化 --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <filter> <filter-name>struts2</filter-name> <filter-class> org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter </filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>*.action</url-pattern> </filter-mapping>
没想到n次重启Tomcat,老是出现:
java.lang.ClassNotFoundException:org.springframework.web.context.ContextLoaderListener
的错误,起初以为是没有导入相关包,但是再三排查,没有问题,搞了很久,从这里得到启发,以下是其部分内容:
经常碰到有人在部署Web工程的时候会报如上错误,搞了半天还不知道是什么原因。:(
其实原因很简单:
首先,看看你的工程WEB-INF/lib目录下是否添加了spring.jar包?假如没有,添加spring.jar到lib目录下。
其次,到web server的应用部署目录(假如是tomcat就是webapps,假如是jboss那么是server/{服务器名(默认default)}/)下查看刚刚部署的war包,到里面找WEB-INF/lib目录,往下还是找spring.jar包,有些时候eclipse自动部署会有问题,WEB-INF/lib目录在部署的时候打不到war包里去。
归根结底,就是你的工程构建或者应用部署两个环节中的某一个出了问题。至于后一个原因,最好的解决办法还是手动生成war包,然后把它拷贝到相应的应用部署目录下。
我把Tomcat中发布的相关文件删了,重启Tomcat,终于没问题了,真是郁闷,还搞了半天。