【踩坑】——Tomcat启动失败,报ClassNotFoundException

举报
雪月清 发表于 2022/05/19 10:18:10 2022/05/19
【摘要】 SSM整合很容易造成的就是ClassNotFoundException,本文介绍如何快速解决此问题

SSM整合,Tomcat启动失败,在日志中出现 ClassNotFoundException过滤器文件找不到

问题: 最近刚学习了解Spring、SpringMVC、Mybatis,准备做一个SSM整合的简单项目。本来以为应该很简单,毕竟只是简单的CRUD操作,但是真正做的时候就会出现各种问题,其中一个刚接触SSM整合很容易造成的就是ClassNotFoundException,如下图所示:
在这里插入图片描述

java.lang.ClassNotFoundException: org.springframework.web.filter.CharacterEncodingFilter
		at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1364)
		at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1187)
		at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:539)
		at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:520)
		at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:150)
		at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:249)
		at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:102)
		at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4566)
		at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5203)
		at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
		at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:717)
		at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:690)
		at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:706)
		at org.apache.catalina.startup.HostConfig.manageApp(HostConfig.java:1775)
		at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
		at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)

查看日志就是一堆这样的错误,大概意思是我在web.xml中配置的字符乱码过滤器找不到文件,也有可能是Spring的拦截器找不到。但是web.xml下实实在在的又这些配置,然后就一直在找代码是否哪里写错了,改了好几次,历经艰难险阻,终于发现了问题所在,下面分享解决方法。

解决方法:

  1. 找不到文件首先看自己代码的相关配置是否有问题,如果自己写的类名错了,当然找不到文件了。

  2. 如果配置无误,看pom.xml中相关的spring、springMVC、Mybatis的jar包是否都配置了,并且要注意spring相关jar包如果是5.0版本以上的,mybatis的jar包需要2.0版本以上。

  3. 如果以上两条都没有问题,基本上都是第三种问题了,如下图所示步骤:
    打开File-> Project Structure
    在这里插入图片描述

在这里插入图片描述
发现WEB-INF下没有lib包…因此自己项目下根本没有导入jar ,(导入了但没完全导入)

在这里插入图片描述
右键项目模块点击Put into Output Root 之后项目下就有lib包了,然后apply,最好点击OK,Tomcat正常启动,见到了久违的页面…hhh
在这里插入图片描述
总结: 在使用IDEA进行new一个新的简单的maven项目时,web是我们右键模块添加的框架,因此会存在,模板下面没有自动导入lib目录或者lib目录下的jar不全,之前学习的过程中并没有遇到这个问题,可能是换了不同的IDEA,因此我们在做项目时,应该最后添加一下,防止我们换台电脑换个IDEA的配置就会出现一些莫名其妙的错误。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。