springMVC学习java.lang.ClassNotFoundException:org.springframework.web.servlet.DispatcherServlet

本文针对在整合SSH框架时,使用web.xml加载spring容器过程中出现的ClassNotFoundException问题进行了详细的分析,并提供了三种解决方法,包括检查包的导入、部署到Tomcat时的包检查以及调整WEB-INF/lib目录下的包结构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

springMVC学习
经过web.xml加载spring容器时遇到
java.lang.ClassNotFoundException:org.springframework.web

通过web.xml加载spring容器时遇到java.lang.ClassNotFoundException: org.springframework.web。整合ssh时,通过web.xml加载spring容器的时候,有的同学可能会出现java.lang.ClassNotFoundException: org.springframeworntext.ContextLoaderListener错误。

根据错误提示,很明显能判断出来是因为类加载器找不到类。出现这个错误一般有三种可能,下面提供解决方法。 


第一:最低级的错误,忘了导包。该类是在spring.jar里面,看看你是否忘了导包。需要AddPath。并刷新工程。


第二:发现已经导入了包,在工程里面手动能找到该类了(Referen Libaries下),但还是出错。那么就应该看看你应用到tomcat里面的web应用里面有没有该包。有些开发工具存在debug,通过开发工具应用到tomcat的时存在丢包的情况,所以最好去tomcat里检查一下,看看WEB-INF/lib下面有没有spring.jar包。


第三:如果以上都没有问题,那么就是你的开发环境的问题了。解决方法是不要在WEB-INF/lib下建文件夹,所有的包放到WEB-INF/lib根目录下即可。



MyEclipse的某些版本不支持lib下建立分支文件夹,折腾一天,我是第三种解决的。希望可以帮到新手。

严重: 启动过滤器异常[characterEncodingFilter] java.lang.NoClassDefFoundError: javax/servlet/Filter at java.base/java.lang.ClassLoader.defineClass1(Native Method) at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1023) at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150) at org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:2161) at org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:695) at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1183) at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1053) at java.base/java.lang.ClassLoader.defineClass1(Native Method) at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1023) at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150) at org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:2161) at org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:695) at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1183) at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1053) at java.base/java.lang.ClassLoader.defineClass1(Native Method) at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1023) at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150) at org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:2161) at org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:695) at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1183) at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1053) at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:480) at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:463) at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:139) at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:221) at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:95) at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3868) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:4470) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1170) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1160) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317) at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:145) at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:716) at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:771) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1170) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1160) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317) at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:145) at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:716) at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:203) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164) at org.apache.catalina.core.StandardService.startInternal(StandardService.java:415) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164) at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:866) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164) at org.apache.catalina.startup.Catalina.start(Catalina.java:759) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) at java.base/java.lang.reflect.Method.invoke(Method.java:580) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:342) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:470) Caused by: java.lang.ClassNotFoundException: javax.servlet.Filter at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1222) at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1053) ... 54 more 5月 10, 2025 2:24:18 下午 org.apache.catalina.core.StandardContext startInternal 严重: 一个或多个筛选器启动失败。完整的详细信息将在相应的容器日志文件中找到 5月 10, 2025 2:24:18 下午 org.apache.catalina.core.StandardContext startInternal 严重: 由于之前的错误,Context[/productms]启动失败 5月 10, 2025 2:24:18 下午 org.apache.catalina.loader.WebappClassLoaderBase clearReferencesThreads 警告: Web应用程序[productms]似乎启动了一个名为[mysql-cj-abandoned-connection-cleanup]的线程,但未能停止它。这很可能会造成内存泄漏。线程的堆栈跟踪:[ java.base/java.io.WinNTFileSystem.getBooleanAttributes0(Native Method) java.base/java.io.WinNTFileSystem.getBooleanAttributes(WinNTFileSystem.java:512) java.base/java.io.FileSystem.hasBooleanAttributes(FileSystem.java:125) java.base/java.io.File.isFile(File.java:900) org.apache.catalina.webresources.AbstractFileResourceSet.file(AbstractFileResourceSet.java:69) org.apache.catalina.webresources.DirResourceSet.getResource(DirResourceSet.java:115) org.apache.catalina.webresources.StandardRoot.getResourceInternal(StandardRoot.java:273) org.apache.catalina.webresources.CachedResource.validateResource(CachedResource.java:107) org.apache.catalina.webresources.Cache.getResource(Cache.java:96) org.apache.catalina.webresources.StandardRoot.getResource(StandardRoot.java:212) org.apache.catalina.webresources.StandardRoot.getClassLoaderResource(StandardRoot.java:221) org.apache.catalina.loader.WebappClassLoaderBase.findResource(WebappClassLoaderBase.java:762) org.apache.catalina.loader.WebappClassLoaderBase.getResource(WebappClassLoaderBase.java:876) com.mysql.cj.jdbc.AbandonedConnectionCleanupThread.checkThreadContextClassLoader(AbandonedConnectionCleanupThread.java:123) com.mysql.cj.jdbc.AbandonedConnectionCleanupThread.run(AbandonedConnectionCleanupThread.java:90) java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) java.base/java.lang.Thread.run(Thread.java:1570)] 5月 10, 2025 2:24:20 下午 org.apache.jasper.servlet.TldScanner scanJars 信息: 至少有一个JAR被扫描用于TLD但尚未包含TLD。 为此记录器启用调试日志记录,以获取已扫描但未在其中找到TLD的完整JAR列表。 在扫描期间跳过不需要的JAR可以缩短启动时间和JSP编译时间。 5月 10, 2025 2:24:20 下午 org.apache.jasper.servlet.TldScanner scanJars 信息: 至少有一个JAR被扫描用于TLD但尚未包含TLD。 为此记录器启用调试日志记录,以获取已扫描但未在其中找到TLD的完整JAR列表。 在扫描期间跳过不需要的JAR可以缩短启动时间和JSP编译时间。 5月 10, 2025 2:24:21 下午 org.apache.jasper.servlet.TldScanner scanJars 信息: 至少有一个JAR被扫描用于TLD但尚未包含TLD。 为此记录器启用调试日志记录,以获取已扫描但未在其中找到TLD的完整JAR列表。 在扫描期间跳过不需要的JAR可以缩短启动时间和JSP编译时间。 5月 10, 2025 2:24:22 下午 org.apache.jasper.servlet.TldScanner scanJars 信息: 至少有一个JAR被扫描用于TLD但尚未包含TLD。 为此记录器启用调试日志记录,以获取已扫描但未在其中找到TLD的完整JAR列表。 在扫描期间跳过不需要的JAR可以缩短启动时间和JSP编译时间。 5月 10, 2025 2:24:23 下午 org.apache.jasper.servlet.TldScanner scanJars 信息: 至少有一个JAR被扫描用于TLD但尚未包含TLD。 为此记录器启用调试日志记录,以获取已扫描但未在其中找到TLD的完整JAR列表。 在扫描期间跳过不需要的JAR可以缩短启动时间和JSP编译时间。 5月 10, 2025 2:24:23 下午 org.apache.catalina.loader.WebappClassLoaderBase checkStateForResourceLoading 信息: 非法访问:此Web应用程序实例已停止。无法加载[]。为了调试以及终止导致非法访问的线程,将抛出以下堆栈跟踪。 java.lang.IllegalStateException: 非法访问:此Web应用程序实例已停止。无法加载[]。为了调试以及终止导致非法访问的线程,将抛出以下堆栈跟踪。 at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading(WebappClassLoaderBase.java:1242) at org.apache.catalina.loader.WebappClassLoaderBase.getResource(WebappClassLoaderBase.java:855) at com.mysql.cj.jdbc.AbandonedConnectionCleanupThread.checkThreadContextClassLoader(AbandonedConnectionCleanupThread.java:123) at com.mysql.cj.jdbc.AbandonedConnectionCleanupThread.run(AbandonedConnectionCleanupThread.java:90) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) at java.base/java.lang.Thread.run(Thread.java:1570)HTTP状态 404 - 未找到 类型 状态报告 消息 文.件[/productms/WEB-INF/views/product-list.jsp] 未找到 描述 源服务器未能找到目标资源的表示或者是不愿公开一个已经存在的资源表示。 Apache Tomcat/11.0.4SpringMVC XML配置文件文件头报错,并且显示Downloading external resources is disabled.
05-11
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值