Java17和springboot3.0使用shiro报ClassNotFoundException的解决
作者:星海蔚蓝
本文主要介绍了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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!