升级SpringBoot版本导致NoSuchMethodError: redis/clients/jedis/ScanResult.getStringCursor()

2023-11-12

今天在对SpringBoot项目升级的时候,把2.1.8.RELEASE 升级到了 2.3.2.RELEASE(2.3.2 — 2.4.2区间内的版本是这样,其他的springboot版本 本人没试过) ,运行后发现,
在获取在线用户的时候,报了一个错误,日志如下:

Caused by: java.lang.NoSuchMethodError: redis/clients/jedis/ScanResult.getStringCursor()Ljava/lang/String; (loaded from file:/E:/m2/repository/redis/clients/jedis/3.3.0/jedis-3.3.0.jar by sun.misc.Launcher$AppClassLoader@1a61fefc) called from class org.crazycake.shiro.WorkAloneRedisManager (loaded from file:/E:/m2/repository/org/crazycake/shiro-redis/3.2.3/shiro-redis-3.2.3.jar by sun.misc.Launcher$AppClassLoader@1a61fefc).
	at org.crazycake.shiro.WorkAloneRedisManager.keys(WorkAloneRedisManager.java:149)
	at org.crazycake.shiro.RedisSessionDAO.getActiveSessions(RedisSessionDAO.java:110)
	at aoshu.bi.monitor.service.impl.SessionServiceImpl.list(SessionServiceImpl.java:35)
	at aoshu.bi.monitor.controller.SessionController.list(SessionController.java:31)
	at aoshu.bi.monitor.controller.SessionController$$FastClassBySpringCGLIB$$a006a1f.invoke(<generated>)
	at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:771)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:749)
	at org.apache.shiro.spring.security.interceptor.AopAllianceAnnotationsAuthorizingMethodInterceptor$1.proceed(AopAllianceAnnotationsAuthorizingMethodInterceptor.java:82)
	at org.apache.shiro.authz.aop.AuthorizingMethodInterceptor.invoke(AuthorizingMethodInterceptor.java:39)
	at org.apache.shiro.spring.security.interceptor.AopAllianceAnnotationsAuthorizingMethodInterceptor.invoke(AopAllianceAnnotationsAuthorizingMethodInterceptor.java:115)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:749)
	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:691)
	at aoshu.bi.monitor.controller.SessionController$$EnhancerBySpringCGLIB$$cfa3f04c.list(<generated>)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:878)
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:792)
	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
	... 64 common frames omitted

 

主要看这里如下错误:
Caused by: java.lang.NoSuchMethodError: redis/clients/jedis/ScanResult.getStringCursor()Ljava/lang/String;

 

这里调的方法是业务里获取在线用户的方法,
在这里插入图片描述
项目引入了 Shiro ,引入了Shiro-redis 这个开源项目

<dependency>
    <groupId>org.crazycake</groupId>
    <artifactId>shiro-redis</artifactId>
    <version>3.2.3</version>
</dependency>

 

Debug 发现 ,底层调用了 scanResult.getStringCursor() 这个方法
在这里插入图片描述
而SpringBoot 2.3 依赖的jedis 的版本为 3.1,已经改为 public String getCursor() 这个方法了 ,没有了 2.9.3 getStringCursor() 方法
在这里插入图片描述

解决方法

由于 Shiro-redis 已经不再维护了,那么只能手动引入 jedis的 2.9.3 版本

在pom.xml

<properties>
    <java.version>1.8</java.version>
    <elasticsearch.version>7.6.1</elasticsearch.version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <jedis.version>2.9.3</jedis.version>
</properties>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

升级SpringBoot版本导致NoSuchMethodError: redis/clients/jedis/ScanResult.getStringCursor() 的相关文章

  • 在游戏框架中编写功能测试的正确方法

    在为基于 play1 2 4 的 web 应用程序编写功能测试时 我对如何正确编码感到有点困惑 困惑在于所涉及的事务边界 我在某处读到每个测试都有自己的事务 在我的应用程序中 用户可以登录并向购物车添加一些商品 然后他可以提供一个地址 以便
  • Spring boot 404错误自定义错误响应ReST

    我正在使用 Spring boot 来托管 REST API 即使浏览器正在访问 URL 以及自定义数据结构 我也希望始终发送 JSON 响应 而不是使用标准错误响应 我可以使用 ControllerAdvice 和 ExceptionHa
  • 如何加载椭圆曲线 PEM 编码的私钥? [复制]

    这个问题在这里已经有答案了 我使用 OpenSSL 生成了椭圆曲线私钥 公钥对 私钥和公钥均采用 PEM 编码 我已经弄清楚如何加载公钥 感谢this https stackoverflow com a 40439081但是 我无法弄清楚如
  • Java 中的 TreeSet 与 C#.net 的等效项

    我有 Java 代码 其中包含TreeSet 我想将代码转换为 C 我可以使用哪个等效集合 如果没有 请提出替代方案 那将是系统 集合 通用 SortedSet
  • 在Tomcat中设置环境变量TESSDATA_PREFIX

    我们正在使用名为 Tess4J 的 Tesseract OCR Java 库 如果作为独立应用程序运行 它可以正常工作 它需要一个名为 TESSDATA PREFIX 的变量 其中包含 tessdata 配置和其他字符集相关文件 它也可以与
  • 从另一个类添加 Swing 组件

    我正在学习java 我正在尝试从另一个类向我的框架添加一个菜单栏 练习将代码划分为多个类以更好地组织程序 这是我的代码示例 public class MainApp public static void main String args C
  • Android Studio 找不到 com.android.support:support-v4:19.1.0

    我已将一个项目导入Android Studio但我收到错误 找不到 com android support support v4 19 1 0 我在哪里可以找到这个文件 我已经使用导入了项目Gradle 我有Android Studio v
  • JavaFX 动画使用循环?

    我正在尝试制作一款类似太空侵略者的游戏 我画了一个正方形 我想通过使用循环逐步向下移动它thread sleep 然而 正方形立即被绘制出来 我知道有可以使用的动画路径 但我想保持低水平并仅使用坐标系 有没有办法使用这样的循环来制作时间轴动
  • EasyMock : java.lang.IllegalStateException: 1 个匹配器预期,2 个记录

    我在使用 EasyMock 2 5 2 和 JUnit 4 8 2 通过 Eclipse 运行 时遇到问题 我已阅读此处所有类似的帖子 但尚未找到答案 我有一个包含两个测试的类 它们测试相同的方法 我正在使用匹配器 每个测试单独运行时都会通
  • 如何在开头时解析 json 文件

    我想解析以下 JSON 文件 但以 向我表明这是一个数组 然后继续 对象 我当前的解析器返回一个 JSON 对象 我的问题是 如何修改解析器来解析这个文件 这样解析器将为我提供其他 JSON 文件 从对象或排列开始 JSON 文件 codi
  • 如何在Android中使用资源

    一个人如何使用资产 我有这个代码 AssetManager assets getAssets InputStream stream assets open test txt 看起来它只能在 Activity 类中使 用 如果我尝试在另一个类
  • 未从线程接收位置数据

    我尝试使用计时器经常发送包含用户位置的短信 最初 我遇到了空指针异常 这是由于我犯了一个简单的错误 一旦解决了这个问题 一切似乎都运行良好 但是 它永远不会获取我的位置 因此 不断发送的文本显示 无法接收位置 我想问的是为什么它无法获取我的
  • JavaFX 8 默认消息图标

    随着 JavaFX 的最近几次更新 我们收到了警报 我想获取消息的默认图标 错误 警告 在Swing中 我可以通过一些方式获取L F消息图标UIManager的属性 如何在 JavaFX 中获取消息的默认图标 它们是包含在属性中 还是由 C
  • System.out.println("嗨"+6+10);打印Hi610?

    为什么要这样做 太令人困惑了 运算符优先级和结合性 两点 操作员 如果一个或两个参数都是字符串 则进行字符串连接 操作员 从左到右工作 所以在你的例子中 Hi 6 is Hi6 and Hi6 10 is Hi610 编辑 正如您在对另一个
  • 在SPRING BOOT中配置多个数据库

    我正在尝试为我的 Spring Boot 应用程序连接 2 个不同的数据库 但出现此错误 应用程序无法启动 描述 com SyncFibertToolSpring SyncFibertTool MydbDB Config MydbDbCon
  • 用什么? MVC、MVP 或 MVVM 还是……?

    我将启动一个 Java 项目来开发桌面应用程序 使用什么作为表示层模式 MVC MVP MVVM 或 如果可能的话 举一些可行的小例子 Actually the ultimate post you re looking for is thi
  • 需要同步仅增量计数器吗?

    我使用整数作为计数器 该整数只会增加 并且肯定有多个线程会同时增加它 当没有其他线程尝试访问其值时 在程序执行结束时读取该计数器的值 我假设我不必为这种仅增量计数器使用锁或任何类型的同步 这是正确的吗 如果这有什么区别的话 我用 Java
  • JavaFX 中的 MVC 模式与场景生成器

    我是 JavaFX 新手 根据我当前的设置 正在努力创建合适的 MVC 架构 我使用 Scene Builder 单击了一个 UI 并指定了一个 Controller 类 Startup public class Portal extend
  • 如何使用 Kafka 发送大消息(超过 15MB)?

    我发送字符串消息到Kafka V 0 8使用 Java Producer API 如果消息大小约为 15 MB 我会得到MessageSizeTooLargeException 我尝试过设置message max bytes到 40 MB
  • selenium 没有找到合适的方法,直到(ExpectedCondition)

    这是有线的问题 我导入的项目运行 100 几个月前 今天我已将其与依赖项一起导入 但存在问题WebDriverWait 这是我的代码 WebDriverWait driverWait new WebDriverWait driver 100

随机推荐

  • Java集合-HashMap1.8也会发生死循环

    在网上搜资料时候然后发现网上都说1 7版本的HashMap会发生死链也就是死循环 但是在HashMap中也会产生死循环 接下来直接看代码吧 代码 类名字我忘记改了这是我以前看park时候弄的但是这不重要 当你运行 public class
  • [第16课]统计:诸方差公式

    Start 观看可汗视频 本节课 可汗老师对原始方差公式进行推导 得出如下更简洁的公式 2 i
  • MapReduce基础知识(个人总结)

    声明 1 本文为我的个人复习总结 并非那种从零基础开始普及知识 内容详细全面 言辞官方的文章 2 由于是个人总结 所以用最精简的话语来写文章 3 若有错误不当之处 请指出 Writable类型 Java类型 Hadoop Writable类
  • 构建无服务器 ChatGPT 支持的简历助手 - 基础(二)

    之前我们制作了一个简洁的小命令行工具 可以用来帮助我们构建更好的简历 现在我们将该应用程序部署到云中 我将使用 AWS CDK 因为我喜欢它 而且它使此类事情变得相对简单 如果愿意 您当然可以将这些说明改编为 Terraform 首先让我们
  • CDH6.3修改主机IP

    这里写自定义目录标题 修改ip 停服务 进入mysql修改元数据ip 修改各主机的ip 分别修改各主机的ip 修改所有hadoop集群机器中的cloudera scm agent的配置文件 重启服务 修改ip 开始是在公司使用桥接模式 回到
  • 根据XML文件在原始图片上画矩形框

    根据XML文件在原始图片上画矩形框 输入参数 xml src XML文件路径 img src 原始图片路径 代码 def markImage xml src img src root ET parse xml src getroot cou
  • Eclipse 下载与安装(2022超详细)

    一 下载jdk 去官网可以下载 小编把64位已下载好的放网盘 自行下载 链接 https pan baidu com s 1A0 iWtdvYfwepTXzqXWfMA 提取码 cnqz 1 下载好之后自己选择安装目录安装即可 2 配置环境
  • 留学申请计算机硕士个人陈述,计算机专业“个人陈述”样本

    Computer Science Personal Statement Computing and its applications have always fascinated me and for this reason I have
  • iText官方教程

    如果要导出PDF文件 首选当然是iText 从网上也找了些资料 有很多 也有些乱 自己做了个例子 感觉还是很浅 深入的内容还是研究不透 下载了官方的jar包 本来想看看 里面的Demo 结果只有api文档 资料还真是不好找 今天发现官方还是
  • 第1章 Python概述 课后习题参考答案

    一 单选题 1 以下选项中说法不正确的是 答案为D A 解释是将源代码逐条转换成目标代码并同时运行的过程 B 编译是将源代码转换成目标代码的过程 C Python语言是解释型语言 兼有编译功能 D 静态语言采用解释方式执行 脚本语言采用编译
  • jenkins自动化脚本整理

    发布jar文件 规范化Jenkins 编译服务器编译目录设定为 编译脚本目录 bin 发布脚本目录 deploy 编译代码目录 source 1 项目代码目录 创建source dmmclist txt文件 kc tmplt tmpltsv
  • STM32 电机教程 33 - 无刷电机无感控制快速实现

    前言 上一节 STM32 电机教程 32 基于ST X CUBE SPN7 无刷无感电机库的电机驱动实现 给大家分享了ST的官方的无刷电机无感控制实现方案 基于NUCLEO F103RB和X NUCLEO IHM07M1 3SH开发板 并给
  • R-字符串

    字符串 文本数据存储在字符向量中 或字符数组中 虽然这比较少见 字符向量中的每个元素都是字符串 在R中 字符串 是个常用的非正式术语 因为正式的 字符向量元素 读起来相当拗口 文本的基本单位是字符向量 这意味着大部分字符串处理函数也能用于字
  • jQuery筛选器

    div div ul li li li li ul
  • kotlin协程async await的异常踩坑以及异常处理的正确姿势

    使用Kotlin来做一些异步操作相信大家都非常熟悉了 特别是结合Jetpack的一些组件 使得我们在Android开发中写异步任务非常的方便 但是 关于在使用协程的时候 个人觉得异常处理这一块是相对来讲是需要花时间去了解的地方 因为在使用过
  • 万字深剖 Linux I/O 原理

    目录 传统艺能 梅开二度 当前路径 三大输入输出流 系统文件 I O open open 返回值 close write read 文件描述符fd 对应关系 内存文件 分配规则 重定向 原理 dup2 重定向模拟实现 FILE 的文件描述符
  • IDEA插件开发入门

    转自 https cloud tencent com developer article 1348741 官方文档 https www jetbrains org intellij sdk docs basics getting start
  • 吴恩达机器学习笔记之机器学习系统设计

    确定执行的优先级 误差分析 在设计一个复杂的机器学习系统时 可以先用最简单的算法去快速实现它 然后用交叉验证集来看看自己的算法需要在哪些方面提高 除此之外 还可以进行误差分析 来针对性的提高我们的算法 不对称分类的误差评估 类偏斜情况表现为
  • Mathorcup数学建模竞赛第六届-【妈妈杯】B题:车位分布的优化设计与评价(附一等奖获奖论文、lingo和matlab代码)

    赛题描述 随着现代社会经济的快速发展 房地产成为国家经济发展中重要的经济增长点之一 而小区内汽车停车位的分布对于小区居民的上下班出行影响很大 请建立数学模型 解决下列问题 问题1 分析评判小区汽车停车位分布是否合理的几个关键指标 建立评判车
  • 升级SpringBoot版本导致NoSuchMethodError: redis/clients/jedis/ScanResult.getStringCursor()

    今天在对SpringBoot项目升级的时候 把2 1 8 RELEASE 升级到了 2 3 2 RELEASE 2 3 2 2 4 2区间内的版本是这样 其他的springboot版本 本人没试过 运行后发现 在获取在线用户的时候 报了一个