You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

启动Spring Boot项目后访问首页报错:HttpServletMapping方法缺失

问题分析与解决方案

错误原因

报错java.lang.NoSuchMethodError: 'javax.servlet.http.HttpServletMapping javax.servlet.http.HttpServletRequest.getHttpServletMapping()'的核心原因是:getHttpServletMapping()是Servlet 4.0规范新增的API,而你手动引入的javax.servlet-api版本为3.1.0,低于该方法要求的版本;同时Spring Boot的spring-boot-starter-web默认集成的Tomcat容器已经适配了高版本Servlet API,两者版本冲突导致方法找不到。

解决方案

1. 移除冲突的Servlet API依赖

直接删除依赖中手动添加的javax.servlet-api节点,spring-boot-starter-web已经内置了适配当前Spring Boot版本的Servlet API依赖,无需手动引入:

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version>
</dependency>

2. 统一依赖版本,避免版本不一致

Spring Boot通过依赖管理插件可以自动统一所有Spring相关依赖的版本,建议移除手动指定的版本号,让Spring Boot自动管理:

  • 移除spring-jdbc的version节点
  • 移除spring-boot-starter-validation的version节点
  • 移除spring-security-crypto的version节点

修改后的完整依赖配置示例:

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-mail</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
        <groupId>com.mysql</groupId>
        <artifactId>mysql-connector-j</artifactId>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jdbc</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-validation</artifactId>
    </dependency>

    <dependency>
        <groupId>javax.servlet.jsp</groupId>
        <artifactId>javax.servlet.jsp-api</artifactId>
        <version>2.3.2-b02</version>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-jasper</artifactId>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
    </dependency>

    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-crypto</artifactId>
    </dependency>
</dependencies>

3. 清理缓存并重新构建项目

执行以下命令清理构建缓存,重新编译项目:

  • Maven:
mvn clean install
  • Gradle(若使用Gradle构建):
./gradlew clean build

内容的提问来源于stack exchange,提问作者mohamed sherif

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 06:37:23