こんにちは、春-redisを使用しようとすると私は得ています
Java.lang.NoClassDefFoundError: Could not initialize class org.springframework.data.redis.connection.jedis.JedisConnection
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;
この例外が発生する理由を誰かが知っている場合は、提案してください。
ほぼ1日を浪費し、jarがすでにクラスパス上にあることを確認した後、さらにデバッグして、Javaのリフレクションメカニズムが「メソッドリスト」にすでに存在するメソッドを見つけようとしたときに、見つけられなかったことがわかりました。 Jedisバージョン(2.7.2)とSpring Data Redis(1.5.0.RELEASE)との間に互換性がないため、この問題はすでに発生しています。このリンクで回答::
JedisとSpringのデータredisバージョンの競合
Jedis Configurationを使用する場合、JedisPoolConfigが必要です。 Spring Boot 2.0では、spring-boot-starter-data-redisはデフォルトでJedisではなくLettuceの依存関係を提供します。 Jedis構成を使用するには、Letuceを除外し、次のように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>
redisクライアントがまだ古いパッケージ構造を保持している最新バージョンは、2.10.2です。
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.10.2</version>
</dependency>
3.0.xから、パッケージ構造が変更されました。 spring-data-redisが古いパッケージ構造でredisクライアントのプールクラスを呼び出す場合、Java.lang.NoClassDefFoundError
最新のようですspring-data-redis:2.1.10.RELEASEまだ古いパッケージ構造でredisクライアントのプールクラスを呼び出すため、redis.clientsを使用する必要があります2.10.2
互換性のあるバージョンに変更します。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<version>2.0.4.RELEASE</version>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
クラス_org.springframework.data.redis.connection.jedis.JedisConnection
_がクラスパスにありません。この依存関係が利用可能かどうか、不足している場合は含めてください。
欠落しているjarは、次のように Mavenリポジトリーredisページ のように、Redisバージョンを指定する必要があるため、spring-data-redist-(your-version).jar
の形式になります。