博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
阅读量:5271 次
发布时间:2019-06-14

本文共 3141 字,大约阅读时间需要 10 分钟。

在使用 Spring 框架构建一个 Web 工程的时候,我们需要在 web.xml 中配置了一个 Spring 的上下文监听器:

1 
2
3
org.springframework.web.context.ContextLoaderListener 4
5

随后在启动 Tomcat 服务器后,Console 控制台报错java.lang.ClassNotFoundException:org.springframework.web.context.ContextLoaderListener。

异常描述:

1 严重: Error configuring application listener of class  2 org.springframework.web.context.ContextLoaderListener  3    java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener  4    	at org.apache.catalina.loader.WebappClassLoaderBase.loadClass  5 (WebappClassLoaderBase.java:1858)  6    	at org.apache.catalina.loader.WebappClassLoaderBase.loadClass  7 (WebappClassLoaderBase.java:1701)  8    	at org.apache.catalina.core.DefaultInstanceManager.loadClass  9 (DefaultInstanceManager.java:504) 10    	at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged 11 (DefaultInstanceManager.java:486) 12    	at org.apache.catalina.core.DefaultInstanceManager.newInstance 13 (DefaultInstanceManager.java:113) 14    	at org.apache.catalina.core.StandardContext.listenerStart 15 (StandardContext.java:4984) 16    	at org.apache.catalina.core.StandardContext.startInternal 17 (StandardContext.java:5584) 18   	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147) 19   	at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:899) 20   	at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:875) 21   	at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:652) 22   	at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1260) 23   	at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:2002) 24   	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 25   	at java.util.concurrent.FutureTask.run(FutureTask.java:266) 26   	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 27   	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 28   	at java.lang.Thread.run(Thread.java:745)

错误分析:

错误的意思很明确:找不到“ org.springframework.web.context.ContextLoaderListener”这个类,ContextLoaderListener 这个类是在 spring-web.jar 包下,仔细检查了项目 jar 环境,发现在 Web 项目下 lib 导入的 spring 的 jar 包中,确实缺少导入一个名为 spring-web-4.3.8.RELEASE.jar 的 jar 包。然后导入,重新启动 Tomcat 服务器即可顺利通过。

 

问题补充:

如果在检查了项目 jar 环境,发现该 jar 包确实存在,而且也能找到编译后的 ContextLoaderListener.class 文件。但在启动 Tomcat 服务器后,Console 控制台依旧报错 java.lang.ClassNotFoundException:org.springframework.web.context.ContextLoaderListener。

问题的原因可能是你导入的仅仅是 jar 包的引用,例如在 eclipse 的 build path 直接引用的 jar 包(类似快捷方式),没有把 jar 文件拷贝到 lib 目录下。即使这种在 Java Application 中没有问题,但在 web Application 中也可能会出现找不到类的异常。

我们知道JVM虚拟机是根据 Java ClassLoader (类加载器)决定如何加载 Class。  系统默认提供了3个 ClassLoader 。Root ClassLoader、ClassPath Loader 和 Ext ClassLoader  。

而 web Application 使用的是自定义的 ClassLoader,而非JVM中的存在的三种 ClassLoader。所以它无法识别出我们写在 xml 文件中的第三方类库的 class 文件,而只有我们写在 src 目录下的 java 文件才能使用。

因此,我们必须要把所需的第三方的类库放入到 WEB-INF/lib 目录下,web Application 才会识别我们定义在 xml 中的类。然后再重新启动 Tomcat 服务器便可顺利通过。

转载于:https://www.cnblogs.com/justlove/p/6785210.html

你可能感兴趣的文章
java equals 小记
查看>>
2019春 软件工程实践 助教总结
查看>>
Zerver是一个C#开发的Nginx+PHP+Mysql+memcached+redis绿色集成开发环境
查看>>
程序的静态链接,动态链接和装载 (补充)
查看>>
关于本博客说明
查看>>
[Kaggle] Sentiment Analysis on Movie Reviews
查看>>
价值观
查看>>
mongodb命令----批量更改文档字段名
查看>>
国外常见互联网盈利创新模式
查看>>
android:scaleType属性
查看>>
shell脚本
查看>>
Upload Image to .NET Core 2.1 API
查看>>
【雷电】源代码分析(二)-- 进入游戏攻击
查看>>
Linux中防火墙centos
查看>>
如何设置映射网络驱动器的具体步骤和方法
查看>>
centos下同时启动多个tomcat
查看>>
Leetcode Balanced Binary Tree
查看>>
[JS]递归对象或数组
查看>>
linux sed命令
查看>>
html标签的嵌套规则
查看>>