Spring Security 升级到 5.5.7、5.6.4 及以上启动报错出现版本不兼容解决思路

这篇具有很好参考价值的文章主要介绍了Spring Security 升级到 5.5.7、5.6.4 及以上启动报错出现版本不兼容解决思路。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.背景

版本比对检测原理:检查当前系统中spring-security-web版本是否在漏洞版本范围内|版本比对检测结果:- spring-security-web
当前安装版本:5.2.1.RELEASE
需要升级到 5.5.7、5.6.4 及以上版本,因为pom中找不到直接引用的位置,所以加入以下依赖将spring-security-web版本强制升级到5.5.7

    <!-- 修复spring-security-web版本漏洞 -->
    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-web</artifactId>
        <version>5.5.7</version>
    </dependency>

启动时报错,报错内容如下:

***************************
APPLICATION FAILED TO START
***************************

Description:

An attempt was made to call a method that does not exist. The attempt was made from the following location:

    org.springframework.security.web.util.matcher.OrRequestMatcher.<init>(OrRequestMatcher.java:43)

The following method did not exist:

    org.springframework.util.Assert.noNullElements(Ljava/util/Collection;Ljava/lang/String;)V

The method's class, org.springframework.util.Assert, is available from the following locations:

    jar:file:/C:/Users/sutpc/.m2/repository/org/springframework/spring-core/5.1.18.RELEASE/spring-core-5.1.18.RELEASE.jar!/org/springframework/util/Assert.class

It was loaded from the following location:

    file:/C:/Users/sutpc/.m2/repository/org/springframework/spring-core/5.1.18.RELEASE/spring-core-5.1.18.RELEASE.jar

2.原因分析

可以发现spring包版本不兼容导致该问题,理论上是spring-security-web是在某一个jar引入,单独改了spring-security-web的版本,导致这个jar中的配套代码不兼容导致的问题

3.解决方式

将spring-boot-dependencies的2.1.17.RELEASE升级到2.2.2.RELEASE
            <!-- SpringBoot的依赖配置-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
<!--                <version>2.1.17.RELEASE</version>-->
                <version>2.2.2.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
在pom的最后直接使用spring-security-web的5.5.7强制覆盖版本即可
        <!-- 修复spring-security-web版本漏洞 -->
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-web</artifactId>
            <version>5.5.7</version>
        </dependency>

4.解决思路:

因为单独改了spring-security-web的版本,导致这个jar中的配套代码不兼容导致的问题,所以首要问题需要找到spring-security-web由哪个jar引入的

4.1查询Maven 项目查找 jar 包是由哪个依赖引入的

直接使用mvn dependency:tree可以查看项目完整的依赖树。

  1. 命令格式
mvn dependency:tree -Dverbose -Dincludes=要查询的内容(groupId:artifactId)

-dependency:tree:表示树状显示。
-Dverbose:表示可以显示所有的引用,包括因为多次引用重复而忽略的。
-Dincludes:可以制定查询条件

spring-security-web的groupId和artifactId为:

groupId: org.springframework.security
artifactId: spring-security-web
所以命令为
mvn dependency:tree -Dverbose -Dincludes=org.springframework.security:spring-security-web
4.2在idea的Teminal中执行之后依赖层级如下图

Spring Security 升级到 5.5.7、5.6.4 及以上启动报错出现版本不兼容解决思路

4.3spring-security-web是由spring-boot-starter-security引入的

spring-security-web是由spring-boot-starter-security引入的,版本是2.1.17.RELEASE,搜spring-boot-starter-security发现又是使用的spring-boot-dependencies-2.1.17.RELEASE.pom的版本
Spring Security 升级到 5.5.7、5.6.4 及以上启动报错出现版本不兼容解决思路

4.3spring-boot-starter-security版本是继承spring-boot-dependencies的版本

在全局搜spring-boot-dependencies的版本,发现果然是2.1.17.RELEASE,到此,所有的依赖层级都找到了,那开始猜,是不是spring-boot-dependencies版本太低了,spring-security-web的版本太高了导致的不兼容,spring-security-web版本不能调低,只能升级spring-boot-dependencies的版本,在maven仓库查找spring-boot-dependencies版本,逐级测试,发现2.2.2.RELEASE可以支持,所以问题到此解决.
Spring Security 升级到 5.5.7、5.6.4 及以上启动报错出现版本不兼容解决思路

参考:
Maven 项目查找 jar 包是由哪个依赖引入的文章来源地址https://www.toymoban.com/news/detail-424127.html

到了这里,关于Spring Security 升级到 5.5.7、5.6.4 及以上启动报错出现版本不兼容解决思路的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Keil 5.37版本及以上安装(兼容低版本),解决‘Default Compiler Version 5‘ Which is not available

    在 Keil5.37 及以上版本中,在默认编译器中不再默认安装 compiler version5 ,故需要自行查阅 Keil 官网资料找到对应编译器,这里以 Keil5.38a 版本为例,详细说明安装所需步骤。 这里需要准备三个安装包,分别为: - Keil 5.38a 安装包 - Keil 2032 注册机 有能力支持正版 - v5 版本 编译器

    2024年02月05日
    浏览(42)
  • 系列十一、Spring Security登录接口兼容JSON格式登录

            前后端分离中,前端和后端的数据交互通常是JSON格式,而Spring Security的登录接口默认支持的是form-data或者x-www-form-urlencoded的,如下所示: 那么如何让Spring Security的登录接口也支持JSON格式登录呢?请看下文分析 

    2024年01月20日
    浏览(31)
  • Android实现App内自动升级,适配了安卓7、8及以上版本

            应用发布后,要实现灰度升级控制,如果只依赖各家应用市场是不够的,还需要自己在应用中控制升级逻辑。并且每家应用市场上新审核也是一件很麻烦的事情,尤其像至简网格这样的应用,甚至没在应用市场上架,更不可能依赖它们了。所以必须要在应用中实现自

    2024年02月10日
    浏览(47)
  • Jupyter-notebook升级内核至Python3.9版本以上

      目录 1、用管理员身份打开Anaconda Prompt 2、Install 3、Activate 4、pywin32_postinstall.py -install  5、打开 6、问题 6.1、Jupyter-notebook默认文件夹位置(Home) 6.2、再次打开3.9版本需要重复操作5、打开 因为调用matplotlib库时出现版本不兼容的问题,我想将Python版本升级到3.9以上,搞了一下午

    2024年02月05日
    浏览(42)
  • 【Android】app应用内版本更新升级(DownloadManager下载,适配Android6.0以上所有版本)

    版本的升级和更新是一个线上App所必备的功能,App的升级安装包主要通过 应用商店 或者 应用内下载 两种方式获得,大部分app这两种方式都会具备,应用商店只需要上传对应平台审核通过即可,而应用内更新一般是通过以下几种方式: 1.集成第三方库如 appupdateX、bugly 的更新

    2024年02月11日
    浏览(55)
  • IDEA插件版本升级和兼容新版本idea

    1.关于IDEA插件的版本设置问题 打开jetbrains插件市场,随意打开一个插件详情页面的Versions菜单,我们可以看见一个插件包不同时期发布的不同版本(Versions),并且每个版本包含了可兼容IDEA或PyCharm的版本范围(Compatibility Range)和更新时间(Update Date)(如下图所示,图例参考

    2024年02月04日
    浏览(31)
  • Windows 7 下安装 python 3.9 及以上版本的方法(Anaconda 中的 python 版本还是 3.8 或以下 并且升级不了)

    解压下面压缩包,里面有从 github 仓库 上 clone 的各种 python Windows 7 补丁版本(但是有些大,超过了 CSDN 限制,推荐从仓库链接下载,如果下载太慢可以点击下面链接下载部分版本 共4个):       点击这里跳转到安装压缩包    例如,安装其中的 python 3.10.0 文件夹下包

    2023年04月11日
    浏览(76)
  • SpringBoot集成Kafka版本不兼容导致出现错误

    1、系统报错 2、排查与解决 出错原因:springboot集成spring-kafka的时候需要注意两者之间的版本对应关系,因为版本不兼容导致出现错误 解决:kafka-clients : 是springboot集成的spring-kafka,spring-kafka中引入了kafka-client的版本 参考:https://spring.io/projects/spring-kafka 参考:https://stackover

    2024年02月14日
    浏览(21)
  • spring boot与spring cloud版本兼容问题解决(附版本兼容表)

    天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。 以下为解决报错问题,如果看完还不能解决,可以参考下面这篇文章搭建spring cloud sp

    2024年02月13日
    浏览(29)
  • Idea新建spring Initializr项目时选择Project SDK为1.8,选择java版本只有是17和21,出现报错信息

    1.项目构建图展示: 2.报错图展示: 3.原因说的很清楚了,是java版本和jdk版本不符合导致的 4.解决方案 改为阿里云的服务器路径: https://start.aliyun.com 5.测试 这时候就有了java8的版本了

    2024年01月17日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包