Jedis 4.3.2与Spring Data Redis 3.0.4兼容问题及Java8适配咨询
解决方案
方案1:降级Spring Data Redis到兼容Java8的版本
Spring Data Redis 3.x属于Spring Framework 6.x生态,强制要求Java17及以上。若要保留Java8,需降级到2.x分支的最新稳定版:
- 选择Spring Data Redis
2.7.12,该版本完全兼容Java8,且能和Jedis 4.3.2(Java8+兼容)搭配使用,可正常获取Jedis的ACL增强功能。 - 依赖配置示例:
// Gradle implementation 'org.springframework.data:spring-data-redis:2.7.12' implementation 'redis.clients:jedis:4.3.2'<!-- Maven --> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-redis</artifactId> <version>2.7.12</version> </dependency> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>4.3.2</version> </dependency>
方案2:升级项目Java版本到17(长期最优解)
若团队有版本升级计划,直接将项目JDK切换到17:
- 调整编译配置:
// Gradle java { sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 }<!-- Maven --> <properties> <maven.compiler.source>17</maven.compiler.source> <maven.compiler.target>17</maven.compiler.target> </properties> - 确保所有Spring相关依赖对齐到6.x版本,避免混合版本冲突。
方案3:强制替换spring-beans版本(不推荐)
此方法风险极高,Spring 6.x组件依赖Java17特性,强行替换为兼容Java8的旧版spring-beans(如5.3.x)会引发运行时类不兼容、方法缺失等问题。仅作临时验证使用:
// Gradle示例 implementation('org.springframework.data:spring-data-redis:3.0.4') { exclude group: 'org.springframework', module: 'spring-beans' } implementation 'org.springframework:spring-beans:5.3.30'
内容的提问来源于stack exchange,提问作者Apoorv Verma
相关产品推荐
相关产品推荐

