ClassNotFoundException: org.springframework.web.context.ContextLoaderListener异常!

aihuaying 2012-08-17 02:45:28
web.xml使用如下监听方式加载spring时。报错。

<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:example.xml</param-value>
</context-param>


目前使用的spring-framework-3.1.2.RELEASE-with-docs下的jar.如下。
commons-logging-1.1.1.jar
org.springframework.asm-3.1.2.RELEASE.jar
org.springframework.beans-3.1.2.RELEASE.jar
org.springframework.context-3.1.2.RELEASE.jar
org.springframework.core-3.1.2.RELEASE.jar
org.springframework.expression-3.1.2.RELEASE.jar
org.springframework.web-3.1.2.RELEASE.jar
org.springframework.web.servlet-3.1.2.RELEASE.jar
当然我也试过把spring-framework-3.1.2.RELEASE\dist目录下的所有包。也报上面那个错。
tomcat启动就报错说:说找不到org.springframework.web.context.ContextLoaderListener这个类。
之前我是使用User Library加包方式。网上查一下,直接把包放到lib下。但还是一样的报错。

大侠们,怎么解决呢。我是使用spring3.1.2和tomcat6.0

但我使用下面这个方式加载.却可以正常访问。

<servlet>
<servlet-name>springMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:/example.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springMVC</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>


请大侠们给给意见。这两种加载方式有什么区别。那种方式比较好。还有为什么我使用listener方式加载,出错?????
...全文
13332 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
ttjxtjx 2015-03-06
  • 打赏
  • 举报
回复
哈,我也碰到过,不是因为少jar包,而是部署的时候jar包没部署过去。
解决办法:确保jar包被部署到web-inf/lib下

邹邹wl 2015-03-03
  • 打赏
  • 举报
回复
完整的工程目录,引用完成的jar包,完整的配置信息贴出来看看。 Ctrl+鼠标左键点击 org.springframework.web.context.ContextLoaderListener 能跟踪进去吗。 还有你的第一个和第二个是不一样的引用,第一个行与不行跟第二个行与不行没什么关联吧。
jinzhaoxiang 2015-03-03
  • 打赏
  • 举报
回复
我也是这个错误
ki_boy 2014-10-27
  • 打赏
  • 举报
回复
我也是这个错误啊 ,求解释
jiekou0704 2014-02-21
  • 打赏
  • 举报
回复
lz 是单纯的只用了spring 么?
ding2wife 2014-02-21
  • 打赏
  • 举报
回复
求解释啊 我也这个错误
  • 打赏
  • 举报
回复
该不会是没有把jar包引用进来吧
aihuaying 2012-08-17
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

你用ctrl+shit+t,快捷键,然后输入ContextLoaderListener这个类,看能找到源码吗?应该是你包没加载进,或者你找一个java类,写这个类,然后看能import不?
[/Quote]

我试了过了这个org.springframework.web-3.1.2.RELEASE.jar包里有这个类。
import org.springframework.web.context.ContextLoaderListener也能找到这个类。
aihuaying 2012-08-17
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

有没有冲突什么的啊 ?
[/Quote]

我全都是用官方下载的spring-framework-3.1.2.RELEASE-with-docs里dist目录下的包的。哪些包会有什么冲突呢。
aihuaying 2012-08-17
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
你把tomcat启动报错的信息 打印出来,怀疑实际上是其他的问题,而不在这个类加载上

引用 3 楼 的回复:

引用 2 楼 的回复:

肯定是你lib包放置的地方不正确,第一种方法,将所有的spring相关包放到工程的web-inf/lib这个文件夹下,然后将web-inf/lib的所有jar放到classpath当中,不管你调试还是部署运行 应该都不会报之前的那个找不到类的问……
[/Quote]
这是我的报错信息。

严重: 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:1647)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1493)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4115)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4671)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:799)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:779)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:546)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1041)
at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:964)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:502)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1277)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:321)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1061)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:785)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
at org.apache.catalina.core.StandardService.start(StandardService.java:525)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:701)
at org.apache.catalina.startup.Catalina.start(Catalina.java:585)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
rj0917 2012-08-17
  • 打赏
  • 举报
回复
你用ctrl+shit+t,快捷键,然后输入ContextLoaderListener这个类,看能找到源码吗?应该是你包没加载进,或者你找一个java类,写这个类,然后看能import不?
五哥 2012-08-17
  • 打赏
  • 举报
回复
有没有冲突什么的啊 ?
风尘中国 2012-08-17
  • 打赏
  • 举报
回复

你把tomcat启动报错的信息 打印出来,怀疑实际上是其他的问题,而不在这个类加载上

[Quote=引用 3 楼 的回复:]

引用 2 楼 的回复:

肯定是你lib包放置的地方不正确,第一种方法,将所有的spring相关包放到工程的web-inf/lib这个文件夹下,然后将web-inf/lib的所有jar放到classpath当中,不管你调试还是部署运行 应该都不会报之前的那个找不到类的问题,具体的org.springframework.web.context.ContextLoaderListener这个类……
[/Quote]
aihuaying 2012-08-17
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

肯定是你lib包放置的地方不正确,第一种方法,将所有的spring相关包放到工程的web-inf/lib这个文件夹下,然后将web-inf/lib的所有jar放到classpath当中,不管你调试还是部署运行 应该都不会报之前的那个找不到类的问题,具体的org.springframework.web.context.ContextLoaderListener这个类 就在org.springfra……
[/Quote]


WEB_INF/lib下。已经放过。还是不行。ContextLoaderListener这个类在这个包org.springframework.web-3.1.2.RELEASE.jar是找到的。但还是不行。
风尘中国 2012-08-17
  • 打赏
  • 举报
回复
肯定是你lib包放置的地方不正确,第一种方法,将所有的spring相关包放到工程的web-inf/lib这个文件夹下,然后将web-inf/lib的所有jar放到classpath当中,不管你调试还是部署运行 应该都不会报之前的那个找不到类的问题,具体的org.springframework.web.context.ContextLoaderListener这个类 就在org.springframework.web-3.1.2.RELEASE.jar 这个包下,你可以用rar解压缩这个jar,应该能找到。
scbb 2012-08-17
  • 打赏
  • 举报
回复
lib的jar文件还是没放对地方。。。
你建得什么类型的工程?

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧