spring-mvc项目运行报错:
Handler dispatch failed; nested exception is java.lang.NoSuchMethodError: javax.servlet.http.HttpServletRequest.getHttpServletMapping()Ljavax/servlet/http/HttpServletMapping;
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版本冲突引起的。HttpServletRequest
的getHttpServletMapping()
方法是在Servlet API 4.0版本中新增的方法,而你的应用程序可能正在使用较低版本的Servlet API(例如Servlet API 3.1)。检查你的Servlet容器(例如Tomcat)的版本,确保它支持Servlet API 4.0或以上的版本。如果不支持,考虑升级Servlet容器。
可以看看引入的库的版本对不对。有些版本变更,会移除一些方法,导致找不到方法异常,又或者有依赖冲突