程序运行时出现
java.lang.NoSuchMethodError: javax.servlet.http.HttpServletRequest.getHttpServletMapping()
Ljavax/servlet/http/HttpServletMapping;
这个错误通常是由于Servlet API版本不匹配导致的,以下是可能的原因和解决方案:
1. 依赖冲突:
● 检查项目中是否存在多个不同版本的Servlet API依赖
● 使用Maven命令mvn dependency:tree查看依赖树
● 排除冲突的依赖版本,在pom.xml中添加:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
1. Tomcat版本问题:
● Tomcat 9.x对应Servlet 4.0规范
● Tomcat 10.x需要Spring Boot 3.x支持(Servlet 5.0)
● 建议升级Tomcat版本或调整Spring Boot版本
2. 临时解决方案:
● 添加servlet-api依赖后运行一次,然后删除该依赖可能解决问题
● 确保项目配置文件中端口配置正确
3. 版本兼容性检查:
● 确认JDK、Tomcat和Spring Boot版本匹配
● 避免使用过低的Tomcat版本(如Tomcat 6)
建议优先检查依赖冲突问题,这是最常见的原因。如果使用嵌入式Tomcat,确保Spring Boot版本与内置Tomcat版本兼容。