Tomcat10运行springMVC项目浏览器访问出现java.lang.NoClassDefFoundError: javax/servlet/http/HttpServlet错误解决方法

1.问题描述

今天复习springMVC知识点时,写了一个简单的SpringMVC项目练练手,但是在Tomcat10运行时控制台没报错,浏览器出现java.lang.NoClassDefFoundError:javax/servlet/http/HttpServlet错误(如图1所示)

Tomcat10运行springMVC项目浏览器访问出现java.lang.NoClassDefFoundError: javax/servlet/http/HttpServlet错误解决方法_第1张图片

图1

2.问题分析

出现了上述错误后,开始怀疑是代码出现问题,检查确认代码没有问题后将问题定位在tomcat服务器或项目依赖,在网上查阅一番发现不少同学出现了相同问题,问题关键就是tomcat10服务器,tomcat10将所有已经实现的API已经从 javax.到jakarta.(如图2所示)
Tomcat10运行springMVC项目浏览器访问出现java.lang.NoClassDefFoundError: javax/servlet/http/HttpServlet错误解决方法_第2张图片

图2

3.问题解决

出现上述问题解决方法有以下两种:

3.1降低tomcat服务器版本,tomcat9替换tomcat10

因为tomcat10将所有已经实现的API已经从 javax.*到jakarta.*如果我们就是要用javax包下的接口或类只能降低tomcat版本

3.2修改项目的依赖

将mave依赖中的javax下的依赖

  		<dependency>
            <groupId>javax.servletgroupId>
            <artifactId>servlet-apiartifactId>
            <version>2.5version>
        dependency>
        <dependency>
            <groupId>javax.servlet.jspgroupId>
            <artifactId>jsp-apiartifactId>
            <version>2.2version>
        dependency>

替换为

		<dependency>
            <groupId>jakarta.servlet.jspgroupId>
            <artifactId>jakarta.servlet.jsp-apiartifactId>
            <version>3.0.0version>
            <scope>providedscope>
        dependency>
        <dependency>
            <groupId>jakarta.servletgroupId>
            <artifactId>jakarta.servlet-apiartifactId>
            <version>5.0.0version>
            <scope>providedscope>
        dependency>

导入依赖部署项目到tomcat10服务器即可,问题解决

你可能感兴趣的:(SpringMVC,java,tomcat,servlet)