项目使用dubbo 、zookeeper服务报 Could not initialize class org.I0Itec.zkclient.ZkClient

在使用Dubbo和Zookeeper作为服务注册中心的项目中,启动时遇到Caused by: java.lang.NoClassDefFoundError,原因是ZkClient类初始化失败。问题排查发现可能是由于缺少相关jar包或者日志框架冲突导致。检查pom.xml文件,确实引入了ZkClient的依赖,但同时发现排除了log4j,推测Dubbo内部依赖log4j。移除对log4j的排除后,重新启动项目,问题解决。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目中使用了dubbo 服务,用zookeeper 做注册中心,用的logback 作为日志框架,在启动项目时候报错如下:

Caused by: java.lang.NoClassDefFoundError: Could not initialize class org.I0Itec.zkclient.ZkClient
    at com.alibaba.dubbo.remoting.zookeeper.zkclient.ZkclientZookeeperClient.<init>(ZkclientZookeeperClient.java:25) ~[dubbo-2.5.3.jar:2.5.3]
    at com.alibaba.dubbo.remoting.zookeeper.zkclient.ZkclientZookeeperTransporter.connect(ZkclientZookeeperTransporter.java:10) ~[dubbo-2.5.3.jar:2.5.3]
    at com.alibaba.dubbo.remoting.zookeeper.ZookeeperTransporter$Adpative.connect(ZookeeperTransporter$Adpative.java) ~[na:2.5.3]
    at com.alibaba.dubbo.registry.zookeeper.ZookeeperRegistry.<init>(ZookeeperRegistry.java:71) ~[dubbo-2.5.3.jar:2.5.3]

看第一句 Caused by: java.lang.NoClassDefFoundError: Could not initialize class org.I0Itec.zkclient.ZkClient
这句说是不能找到初始化ZKClient 类,查了网上资源,说是缺少 jar包,看项目pom, 确实引入了该jar

        <dependency>
            <groupId>com.101tec</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.3</version>
        </dependency>

再网上翻启动日志, 看到一行

java.lang.NoClassDefFoundError: org/apache/log4j/Logger
    at org.I0Itec.zkclient.ZkClient.<clinit>(ZkClient.java:57) ~[zkclient-0.3.jar:0.3]
    at com.alibaba.dubbo.remoting.zookeeper.zkclient.ZkclientZookeeperClient.<init>(ZkclientZookeeperClient.java:25) ~[dubbo-2.5.3.jar:2.5.3]
    at com.alibaba.dubbo.remoting.zookeeper.zkclient.ZkclientZookeeperTransporter.connect(ZkclientZookeeperTransporter.java:10) ~[dubbo-2.5.3.jar:2.5.3]
    at com.alibaba.dubbo.remoting.zookeeper.ZookeeperTransporter$Adpative.connect(ZookeeperTransporter$Adpative.java) ~[na:2.5.3]

说是缺少log4j 包,这么说dubbo内部使用的log4j, 而我在我最后pom里加入了排除log4j

<exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>log4j</groupId>
                    <artifactId>log4j</artifactId>
                </exclusion>
            </exclusions>

估计就是这个问题,然后 删除 log4j 排除 ,再重启,成功。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值