복붙노트

[SPRING] Spring Redis를 사용할 때 JedisConnection에 NoClassDefFound 오류가 나타나는 이유는 무엇입니까?

SPRING

Spring Redis를 사용할 때 JedisConnection에 NoClassDefFound 오류가 나타나는 이유는 무엇입니까?

안녕하세요, 봄 방경을 사용하려고 할 때

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. ==============================

    1.거의 하루를 낭비하고 그 항아리가 이미 클래스 경로에 있다는 것을 알게되면, 나는 그것을 더 디버깅하고 자바의 반사 메커니즘이 이미 "메소드 목록"에있는 메소드를 찾으려고 할 때 찾을 수 없다는 것을 발견했다. Spring Data Redis (1.5.0.RELEASE)와 호환되지 않는 Jedis 버전 (2.7.2) 간의 일부 버전 충돌로 인해이 문제는 이미이 링크에서 답변되었습니다 :: Jedis와 스프링 데이터 redis 버전 충돌

    거의 하루를 낭비하고 그 항아리가 이미 클래스 경로에 있다는 것을 알게되면, 나는 그것을 더 디버깅하고 자바의 반사 메커니즘이 이미 "메소드 목록"에있는 메소드를 찾으려고 할 때 찾을 수 없다는 것을 발견했다. Spring Data Redis (1.5.0.RELEASE)와 호환되지 않는 Jedis 버전 (2.7.2) 간의 일부 버전 충돌로 인해이 문제는 이미이 링크에서 답변되었습니다 :: Jedis와 스프링 데이터 redis 버전 충돌

  2. ==============================

    2.JedisPoolConfig는 Jedis Configuration을 사용할 때 필요합니다. 스프링 부트 2.0에서 spring-boot-startter-data-redis는 Jedis 대신 기본적으로 Lettuce 의존성을 제공합니다. Jedis 구성을 사용하려면 다음과 같이 Lettuce를 제외하고 Jedis를 추가하십시오.

    JedisPoolConfig는 Jedis Configuration을 사용할 때 필요합니다. 스프링 부트 2.0에서 spring-boot-startter-data-redis는 Jedis 대신 기본적으로 Lettuce 의존성을 제공합니다. Jedis 구성을 사용하려면 다음과 같이 Lettuce를 제외하고 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>
    
  3. ==============================

    3.호환 버전으로 변경 :

    호환 버전으로 변경 :

    <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>
    
  4. ==============================

    4.org.springframework.data.redis.connection.jedis.JedisConnection 클래스가 클래스 경로에 없습니다. 이 종속성을 사용할 수 있는지, 누락 된 항목이 있는지 확인하십시오.

    org.springframework.data.redis.connection.jedis.JedisConnection 클래스가 클래스 경로에 없습니다. 이 종속성을 사용할 수 있는지, 누락 된 항목이 있는지 확인하십시오.

    누락 된 jar 파일은 Maven 저장소 redisis 페이지 에서처럼 redis 버전을 제공해야합니다. 따라서 spring-data-redist- (your-version) .jar 형식이어야합니다.

  5. from https://stackoverflow.com/questions/33128318/why-getting-noclassdeffound-error-for-jedisconnection-when-using-spring-redis by cc-by-sa and MIT license