You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Data Redis整合Jedis出现NoClassDefFoundError问题求助

Spring Data Redis与Jedis整合报错:NoClassDefFoundError: org/springframework/data/geo/Metric

错误信息

java.lang.NoClassDefFoundError: org/springframework/data/geo/Metric
at org.springframework.data.redis.connection.jedis.JedisConnectionFactory.(JedisConnectionFactory.java:93)
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:315)
at de.hybris.platform.spring.LazyInitOverrideBeanFactoryPostProcessor.forName(LazyInitOverrideBeanFactoryPostProcessor.java:82)
at java.base/java.util.Optional.map(Optional.java:265)

注:切换至Jedis 3.x版本后仍出现相同错误。

当前依赖配置

<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-redis</artifactId>
    <version>2.7.6</version>
</dependency>

<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>4.2.0</version>
</dependency>

Bean配置

<bean id="jedisConnFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
    <property name="hostName" value="localhost"/>
    <property name="port" value="6379"/>
</bean>

<bean id ="jdkSerializationRedisSerializer" class="org.springframework.data.redis.serializer.JdkSerializationRedisSerializer"/>

<bean id="stringRedisSerializer" class="org.springframework.data.redis.serializer.StringRedisSerializer"/>

<!-- redis template definition -->
<bean id="redisTemplate"
      class="org.springframework.data.redis.core.RedisTemplate">
    <property name="jedisConnFactory" ref="jedisConnFactory"/>
    <property name="keySerializer" ref="stringRedisSerializer"/>
    <property name="valueSerializer" ref="jdkSerializationRedisSerializer"/>
</bean>

问题分析与解决方案

根因

org.springframework.data.geo.Metric类属于spring-data-commons组件,当前依赖中缺少该依赖,或存在版本冲突导致类无法加载。spring-data-redis本身依赖spring-data-commons,但在Hybris这类复杂环境中,可能出现依赖传递失效、版本不匹配的情况。

解决方案

  1. 显式添加spring-data-commons依赖
    确保版本与spring-data-redis一致(2.7.6),添加以下依赖:

    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-commons</artifactId>
        <version>2.7.6</version>
    </dependency>
    
  2. 排查依赖冲突
    执行Maven命令查看依赖树,检查是否存在不同版本的spring-data-commons:

    mvn dependency:tree | grep spring-data-commons
    

    若发现冲突,在spring-data-redis依赖中排除旧版本:

    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-redis</artifactId>
        <version>2.7.6</version>
        <exclusions>
            <exclusion>
                <groupId>org.springframework.data</groupId>
                <artifactId>spring-data-commons</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    
  3. Hybris环境额外检查
    确保依赖被加入Hybris的extension依赖配置中,避免类加载器隔离导致的类无法访问问题。

内容的提问来源于stack exchange,提问作者adidam dileep

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 14:35:16