环境:
Myeclipse IDE
Server采用Myeclipse内嵌Tomcat v'7.0
问题产生:
Spring由版本3.1.1升级到4.1.6,所有Spring-4.1.6-RELEASE jar包都加入了工程的Build Path.
JUnit4的测试例可以正常加载applicationContext.xml中针对Spring-4.1.6的beans,但将工程以Server Application启动时,抛出异常。
异常信息:
Error configuring application listener of class org.springframework.web.context.ContextLoaderListener
java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1714)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559)
at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:532)
at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:514)
at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:133)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4727)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5285)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:744)
解决方法:
在工程名称右击,依次选择“Properties->MyEclipse->Web Deployment Assembly->Add",将Spring-4.1.6-RELEASE导入。
问题分析:
Web Server在部署时,需要web.xml文件,而该文件中有如下内容:
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>其中的"org.springframework.web.context.ContextLoaderListener"需要在Spring包中查找,因此如果Spring包没有包含在Deployment部署路径中,就找不到该对象,抛出异常。
此原因只是推测,没有经过Reference查证,仅供参考。
问题解决参考文章:
本文的解决方法参考了如下文章,致谢
http://blog.csdn.net/sapphire_aling/article/details/6947108
在Myeclipse环境中,将Spring从3.1.1升级到4.1.6后,尽管JUnit测试可以正常运行,但在使用内嵌Tomcat v7.0的Web Server启动应用时遇到异常,报ClassNotFoundException:org.springframework.web.context.ContextLoaderListener。解决方法是在工程属性中,通过Web Deployment Assembly添加Spring-4.1.6-RELEASE到部署配置。

1167

被折叠的 条评论
为什么被折叠?



