Java17和springboot3.0使用shiro报ClassNotFoundException的解决

 更新时间:2024年04月12日 11:16:09   作者:星海蔚蓝  
本文主要介绍了Java17和springboot3.0使用shiro报ClassNotFoundException的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

环境:

  • springboot 3.0.6
  • java17

报错信息:java.lang.ClassNotFoundException: javax.servlet.Filter

当我看到javax时,估摸着应该是部分类库迁移到了jakarta造成的,但也不知道咋解决,最后在StackOverflow看到一篇回答,恍然大悟。

翻译如下:

由于Spring Boot 3.0 使用了Servlet 5.0,而javax.servlet此时已经迁移到了jakarta.servlet中。Shiro已经提供了适配Servlet 5.0 的依赖包,使用<classifier>标签即可选取适配版本,不过部分Shiro包中仍嵌套依赖了一些没有适配jakarta的依赖包,所以我们需要使用<exclude>将其排除,再引入同版本的jakarta适配包,就像这样做:

        <dependency>
            <groupId>org.apache.shiro</groupId>
            <artifactId>shiro-spring</artifactId>
            <classifier>jakarta</classifier>
            <version>1.11.0</version>
            <!-- 排除仍使用了javax.servlet的依赖 -->
            <exclusions>
                <exclusion>
                    <groupId>org.apache.shiro</groupId>
                    <artifactId>shiro-core</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.apache.shiro</groupId>
                    <artifactId>shiro-web</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <!-- 引入适配jakarta的依赖包 -->
        <dependency>
            <groupId>org.apache.shiro</groupId>
            <artifactId>shiro-core</artifactId>
            <classifier>jakarta</classifier>
            <version>1.11.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.shiro</groupId>
            <artifactId>shiro-web</artifactId>
            <classifier>jakarta</classifier>
            <version>1.11.0</version>
            <exclusions>
                <exclusion>
                    <groupId>org.apache.shiro</groupId>
                    <artifactId>shiro-core</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

 到此这篇关于Java17和springboot3.0使用shiro报ClassNotFoundException的解决的文章就介绍到这了,更多相关shiro报ClassNotFoundException内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 在Java中使用ModelMapper简化Shapefile属性转JavaBean实战过程

    在Java中使用ModelMapper简化Shapefile属性转JavaBean实战过程

    本文介绍了在Java中使用ModelMapper库简化Shapefile属性转JavaBean的过程,对比了原始的set方法和构造方法,展示了如何使用ModelMapper进行动态属性映射,从而减少手动编写转换代码的工作量,通过示例代码,展示了如何使用GeoTools读取Shapefile属性并将其转换为JavaBean对象
    2025-02-02
  • java校验String是否符合时间格式yyyy-MM-dd HH:mm:ss的几种方法

    java校验String是否符合时间格式yyyy-MM-dd HH:mm:ss的几种方法

    在实际项目开发中,跟时间参数打交道是必不可少的,为了保证程序的安全性、健壮性,一般都会对参数进行校验,这篇文章主要介绍了java校验String是否符合时间格式yyyy-MM-dd HH:mm:ss的几种方法,需要的朋友可以参考下
    2025-07-07
  • 微服务如何通过feign.RequestInterceptor传递参数

    微服务如何通过feign.RequestInterceptor传递参数

    这篇文章主要介绍了微服务如何通过feign.RequestInterceptor传递参数,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • 详解java中的6种单例写法及优缺点

    详解java中的6种单例写法及优缺点

    在java中,单例有很多种写法,面试时,手写代码环节,除了写算法题,有时候也会让手写单例模式,这里记录一下单例的几种写法和优缺点。需要的朋友可以参考下
    2018-11-11
  • mybatis嵌套循环map方式(高级用法)

    mybatis嵌套循环map方式(高级用法)

    这篇文章主要介绍了mybatis嵌套循环map方式(高级用法),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-01-01
  • 在 Spring Boot 中连接 MySQL 数据库的详细步骤

    在 Spring Boot 中连接 MySQL 数据库的详细步骤

    本文介绍了SpringBoot连接MySQL数据库的流程,添加依赖、配置连接信息、创建实体类与仓库接口,通过自动配置实现数据库操作,并提供API测试方法及常见问题解决方案,感兴趣的朋友跟随小编一起看看吧
    2025-08-08
  • java连接池Druid连接回收DestroyConnectionThread&DestroyTask

    java连接池Druid连接回收DestroyConnectionThread&DestroyTask

    这篇文章主要为大家介绍了java连接池Druid连接回收DestroyConnectionThread&DestroyTask示例分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-09-09
  • SpringMvc/SpringBoot HTTP通信加解密的实现

    SpringMvc/SpringBoot HTTP通信加解密的实现

    这篇文章主要介绍了SpringMvc/SpringBoot HTTP通信加解密的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • Java连接SqlServer错误的完美解决方法

    Java连接SqlServer错误的完美解决方法

    我们在做Java或者C#连接数据库的时候,常常遇到连接SqlServer失败的问题,明明检查了好几遍代码没问题了,还是连接不上,下面这篇文章主要给大家介绍了关于Java连接SqlServer错误的完美解决方法,需要的朋友可以参考下
    2023-04-04
  • Java数据结构之复杂度篇

    Java数据结构之复杂度篇

    算法复杂度分为时间复杂度和空间复杂度。其作用: 时间复杂度是度量算法执行的时间长短;而空间复杂度是度量算法所需存储空间的大小
    2022-01-01

最新评论