Myeclipse环境Spring版本升级后Web Server启动失败

在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到部署配置。

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

环境:

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

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值