背景描述
springBoot 版本为2.0.9 spring-data-redis版本为2.0.14,为了将redission升级到3.15.5,在pom文件新增了
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson</artifactId>
<version>3.15.5</version>
</dependency>
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson-spring-boot-starter</artifactId>
<version>3.15.5</version>
<exclusions>
<exclusion>
<groupId>io.lettuce</groupId>
<artifactId>lettuce-core</artifactId>
</exclusion>
</dependency>
</dependency>
问题
打包在服务器上执行报错:java.lang.NoClassDefFoundError: org/springframework/data/redis/connection/RedisStreamCommands
多方查找,大致了解是springBoot 版本, spring-data-redis版本与redission版本不兼容导致。添加了上述依赖后,依赖包里包含了redisson-spring-data-24 。
解决
查了很多都说降低redisson的版本或者提高springBoot的版本,项目原因都不可行,就把redisson-spring-data-24排除掉,换上与spring-data-redis 2.0.14版本所适配的版本,可通过https://github.com/redisson/redisson/tree/master/redisson-spring-data#spring-data-redis-integration 查询对应版本,最后修改如下,经验证,未有报错了。
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson</artifactId>
<version>3.15.5</version>
</dependency>
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson-spring-boot-starter</artifactId>
<version>3.15.5</version>
<exclusions>
<exclusion>
<groupId>io.lettuce</groupId>
<artifactId>lettuce-core</artifactId>
</exclusion>
<exclusion>
<groupId>org.redisson</groupId>
<artifactId>redisson-spring-data-24</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.redisson</groupId>
<!-- for Spring Data Redis v.2.0.x -->
<artifactId>redisson-spring-data-20</artifactId>
<version>3.15.5</version>
</dependency>