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

Spring Boot Maven应用启动失败:Shiro与FilterRegistrationBean版本兼容问题

问题分析与解决方案

错误根源

你遇到的启动失败是Shiro与Spring Boot版本不兼容导致的:

  • Spring Boot 3.3.1基于Jakarta EE 9+,使用jakarta.servlet包路径,同时对FilterRegistrationBean的setDispatcherTypes方法签名做了修改
  • 当前使用的shiro-spring-boot-web-starter:2.0.1仍依赖旧的javax.servlet API,并且调用的是Spring Boot 3.x中已移除的方法重载,因此触发"NoSuchMethodError"

修复步骤

  1. 升级Shiro到兼容Spring Boot 3.x的版本
    Shiro从2.2.0版本开始全面支持Jakarta EE,适配Spring Boot 3.x。修改pom.xml中Shiro的依赖:

    <dependency>
        <groupId>org.apache.shiro</groupId>
        <artifactId>shiro-spring-boot-web-starter</artifactId>
        <!-- 升级到2.2.0及以上版本,推荐使用最新稳定版 -->
        <version>2.2.0</version>
    </dependency>
    
  2. 移除冲突的Servlet API依赖
    Spring Boot 3.x的spring-boot-starter-web已经内置了jakarta.servlet-api,手动引入的javax.servlet-api:4.0.1会导致包路径冲突,直接删除该依赖:

    <!-- 删除这一段 -->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>4.0.1</version>
    </dependency>
    
  3. 清理并重新构建项目

    • 执行Maven命令清理缓存与构建:
      mvn clean install -U
      
    • 也可以手动删除本地Maven仓库中Shiro和Spring Boot相关的缓存目录(比如E:/Mysoftware/apache-maven-3.9.5/repo/org/apache/shiro和E:/Mysoftware/apache-maven-3.9.5/repo/org/springframework/boot),确保重新拉取兼容的依赖包。

修改后的核心依赖片段

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

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

    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-spring-boot3-starter</artifactId>
        <version>3.5.7</version>
    </dependency>

    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-generator</artifactId>
        <version>3.5.7</version>
    </dependency>

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

    <dependency>
        <groupId>com.mysql</groupId>
        <artifactId>mysql-connector-j</artifactId>
        <scope>runtime</scope>
    </dependency>

    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
    </dependency>

    <dependency>
        <groupId>org.apache.shiro</groupId>
        <artifactId>shiro-spring-boot-web-starter</artifactId>
        <version>2.2.0</version>
    </dependency>

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

内容的提问来源于stack exchange,提问作者xiao lei

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 13:37:09