解决SpringBoot启动报错:NoClassDefFoundError: org/springframework/data/redis/connection/RedisStreamCommands

  • 本人第一篇博客,开始的有点晚,惭愧!

  • 因疫情影响,在家远程办公,效率不高,遇到springboot项目在linux环境下项目启动报错问题,而该问题在windows环境下正常,无法调试,百度也不能直接找到答案,经过一天时间的分析和不断尝试,终于解决了,长舒一口气,借此机会和平台,记录一下解决思路,供大家参考。

具体报错如下:

Caused by: java.lang.NoClassDefFoundError: org/springframework/data/redis/connection/RedisStreamCommands
	at org.redisson.spring.data.connection.RedissonConnectionFactory.getConnection(RedissonConnectionFactory.java:102) ~[redisson-spring-data-22-3.11.6.jar!/:3.11.6]
	at org.springframework.session.data.redis.config.annotation.web.http.RedisHttpSessionConfiguration$EnableRedisKeyspaceNotificationsInitializer.afterPropertiesSet(RedisHttpSessionConfiguration.java:302) ~[spring-session-data-redis-2.1.7.RELEASE.jar!/:2.1.7.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1837) ~[spring-beans-5.1.8.RELEASE.jar!/:5.1.8.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1774) ~[spring-beans-5.1.8.RELEASE.jar!/:5.1.8.RELEASE]
	... 24 common frames omitted

思路:

  1. 首先,找到第二行RedissonConnectionFactory.java:102这段代码追踪,发现和第一行和第三行的错误联系不上。
  2. 接着,分析第一行Caused by: java.lang.NoClassDefFoundError:
    org/springframework/data/redis/connection/RedisStreamCommands,意思是Java虚拟机不能找到合适的类:org/springframework/data/redis/connection/RedisStreamCommands,查看项目用到的jar包spring-data-redis-2.1.9.RELEASE.jar,发现确实没有该类,马上下载高等级包,发现spring-data-redis2.2.1及以上版本的包含有该类,从而尝试将pom文件的spring-data-redis的版本改为2.2.1,发现项目引用的还是2.1.9的老包,经分析,项目用到的是springboot是2.1.6版本所以导致子包spring-data-redis最高版本为2.1.9,再尝试修改pom将springboot版本升级,发现有很多类会报错,考虑到springboot版本升级关联性太强从而“另谋他法”。
  3. 然后,拿上次linux正常运行的包的pom和现在pom对比,发现新增了分布式锁redisson-spring-boot-starter3.11.6,与报错的第二行也对应上了,分析原因是3.11.6版本的分布式锁用到了类RedisStreamCommands,于是,尝试给分布式锁降级,果然降到3.10.6版本后,在linux成功运行!

欢迎大家提出宝贵意见!

  • 10
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值