Handler dispatch failed; nested exception is java.lang.NoSuchMethodError

spring-mvc项目运行报错:

Handler dispatch failed; nested exception is java.lang.NoSuchMethodError: javax.servlet.http.HttpServletRequest.getHttpServletMapping()Ljavax/servlet/http/HttpServletMapping;

img

pom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>org.example</groupId>
  <artifactId>springmvc01-base</artifactId>
  <packaging>war</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>springmvc01-base Maven Webapp</name>
  <url>http://maven.apache.org</url>
    <dependencies>
        <!-- SpringMVC -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.3.1</version>
        </dependency>

        <!-- 日志 -->
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.2.3</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>4.0.0</version>
        </dependency>
        <!-- Spring5和Thymeleaf整合包 -->
        <dependency>
            <groupId>org.thymeleaf</groupId>
            <artifactId>thymeleaf-spring5</artifactId>
            <version>3.0.12.RELEASE</version>
        </dependency>
    </dependencies>
  <build>
    <finalName>springmvc01-base</finalName>
  </build>

</project>

这个错误通常是由于Servlet API版本冲突引起的。HttpServletRequestgetHttpServletMapping()方法是在Servlet API 4.0版本中新增的方法,而你的应用程序可能正在使用较低版本的Servlet API(例如Servlet API 3.1)。检查你的Servlet容器(例如Tomcat)的版本,确保它支持Servlet API 4.0或以上的版本。如果不支持,考虑升级Servlet容器。

可以看看引入的库的版本对不对。有些版本变更,会移除一些方法,导致找不到方法异常,又或者有依赖冲突