1.问题描述

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

在这里插入图片描述

图1

2.问题分析

出现了上述错误后,开始怀疑是代码出现问题,检查确认代码没有问题后将问题定位在tomcat服务器或项目依赖,在网上查阅一番发现不少同学出现了相同问题,问题关键就是tomcat10服务器,tomcat10将所有已经实现的API已经从 javax.到jakarta.(如图2所示)
在这里插入图片描述

图2

3.问题解决

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

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

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

3.2修改项目的依赖

将mave依赖中的javax下的依赖

  		<dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.5</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>jsp-api</artifactId>
            <version>2.2</version>
        </dependency>

替换为

		<dependency>
            <groupId>jakarta.servlet.jsp</groupId>
            <artifactId>jakarta.servlet.jsp-api</artifactId>
            <version>3.0.0</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>jakarta.servlet</groupId>
            <artifactId>jakarta.servlet-api</artifactId>
            <version>5.0.0</version>
            <scope>provided</scope>
        </dependency>

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

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐