您好,当我尝试使用spring-redis时
java.lang.NoClassDefFoundError: Could not initialize class org.springframework.data.redis.connection.jedis.JedisConnection
Run Code Online (Sandbox Code Playgroud)
使用Redis进行任何连接操作时发生异常。我的配置方法是这样的
@Bean
public RedisConnectionFactory jedisConnFactory() {
JedisConnectionFactory jedisConnectionFactory = new JedisConnectionFactory();
jedisConnectionFactory.setHostName("XXX.XX.XX.XXX");
jedisConnectionFactory.setPort(6381);
jedisConnectionFactory.setUsePool(true);
jedisConnectionFactory.afterPropertiesSet();
return jedisConnectionFactory;
Run Code Online (Sandbox Code Playgroud)
请提出建议,如果有人知道我为什么收到此例外。
Tha*_* Le 14
Redis客户端仍然保留旧包结构的最新版本是:2.10.2。
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.10.2</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
从 3.0.x 开始,包结构已更改。如果 spring-data-redis 调用具有旧包结构的 redis 客户端的 Pool 类,则 java.lang.NoClassDefFoundError
似乎最新的spring-data-redis: 2.1.10.RELEASE仍然调用具有旧包结构的 redis 客户端的 Pool 类,因此您需要使用 redis.clients 2.10.2
Sau*_*age 12
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>4.2.1</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
到
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
</dependency>
Run Code Online (Sandbox Code Playgroud)
浪费了将近一天的时间后,发现该jar已经在我的类路径中,我进一步对其进行了调试,发现当Java的反射机制试图查找“方法列表”中已经存在的方法时,它无法找到由于Jedis版本(2.7.2)与Spring Data Redis(1.5.0.RELEASE)不兼容之间存在某些版本冲突,因此此链接中已回答此问题::
Jedis与spring data redis版本冲突
最新版本的Redis客户端解决了我的问题。
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.6.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
当我们使用Jedis配置时,需要JedisPoolConfig。在Spring Boot 2.0中,默认情况下spring-boot-starter-data-redis赋予Lettuce依赖关系,而不是Jedis。要使用Jedis配置,请排除莴苣并按以下方式添加Jedis。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<exclusions>
<exclusion>
<groupId>io.lettuce</groupId>
<artifactId>lettuce-core</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
</dependency>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15381 次 |
| 最近记录: |