SpringBoot项目整合Zookeeper常见错误总结
❃博主首页 :
「程序员1970」
,同名公众号「程序员1970」
☠博主专栏 :
<mysql高手>
<elasticsearch高手>
<源码解读>
<java核心>
<面试攻关>
「程序员1970」
,同名公众号「程序员1970」
☠博主专栏 :
<mysql高手>
<elasticsearch高手>
<源码解读>
<java核心>
<面试攻关>
文章目录
-
- 一、依赖配置问题
-
- 1. 依赖缺失或版本不匹配
- 2. Dubbo与Zookeeper整合依赖错误
- 二、配置问题
-
- 1. Zookeeper连接地址配置错误
- 2. Zookeeper配置文件错误
- 3. Zookeeper端口冲突
- 三、启动失败问题
-
- 1. Zookeeper服务未启动
- 2. 连接超时问题
- 3. 数据目录权限问题
- 四、运行时常见错误
-
- 1. 服务注册失败
- 2. Dubbo服务注册失败
- 3. 循环依赖问题
- 4. Zookeeper客户端连接失败
- 五、Zookeeper启动问题
-
- 1. Zookeeper启动失败
- 2. Zookeeper端口配置错误
- 解决方案总结
- 最佳实践建议
一、依赖配置问题
1. 依赖缺失或版本不匹配
报错内容:
java.lang.NoClassDefFoundError: org/apache/curator/RetryPolicy
java.lang.NoClassDefFoundError: org/apache/zookeeper/Watcher
java.lang.NoClassDefFoundError: org/apache/curator/utils/DefaultZookeeperFactory
java.lang.NoClassDefFoundError: org/apache/curator/framework/CuratorFrameworkFactory
原因:
- 未添加正确的Zookeeper和Curator依赖
- 依赖版本不兼容
解决方案:
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
<version>4.0.1</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>4.0.1</version>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.6.1</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
</exclusions>
</dependency>
2. Dubbo与Zookeeper整合依赖错误
报错内容:
@DubboReference dependencies is failed
原因:
- 未添加Dubbo相关依赖
- 未在启动类添加
@EnableDubbo注解
解决方案:
@SpringBootApplication
@EnableDubbo
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
二、配置问题
1. Zookeeper连接地址配置错误
报错内容:
Caused by: java.lang.IllegalStateException: failed to connect to zookeeper server
原因:
-
spring.cloud.zookeeper.connect-string配置错误 - Zookeeper服务未启动
解决方案:
spring:
cloud:
zookeeper:
connect-string: 192.168.1.100:2181
2. Zookeeper配置文件错误
报错内容:
Invalid arguments, exiting abnormally
java.lang.NumberFormatException: For input string: "D:\MyDevPrograms\Zookeeper\apache-zookeeper-3.8.4-bin\bin\..\conf\zoo.cfg"
原因:
- Zookeeper配置文件(zoo.cfg)配置错误
- 数据目录(dataDir)路径设置不正确
解决方案:
- 确保zoo.cfg中dataDir路径存在
- 创建数据目录并设置权限:
mkdir -p /data/zookeeper
chmod +w /data/zookeeper
3. Zookeeper端口冲突
报错内容:
Error contacting service. It is probably not running.
原因:
- Zookeeper默认端口2181被占用
解决方案:
- 检查端口占用:
netstat -tuln | grep :2181
- 修改zoo.cfg中的clientPort:
clientPort=2182
三、启动失败问题
1. Zookeeper服务未启动
报错内容:
Connection refused: no further information
原因:
- Zookeeper服务未启动
解决方案:
- 启动Zookeeper服务:
bin/zkServer.sh start
2. 连接超时问题
报错内容:
Caused by: java.lang.IllegalStateException: failed to connect to zookeeper server
原因:
- Zookeeper连接超时
解决方案:
spring:
cloud:
zookeeper:
connect-string: 192.168.1.100:2181
connection-timeout: 10000
3. 数据目录权限问题
报错内容:
Error: Cannot create data directory /data/zookeeper
原因:
- Zookeeper数据目录权限不足
解决方案:
chmod -R 755 /data/zookeeper
四、运行时常见错误
1. 服务注册失败
报错内容:
Error contacting service. It is probably not running.
原因:
- Zookeeper服务未启动或网络问题
- 服务名配置错误
解决方案:
- 确认Zookeeper服务已启动
- 检查服务名与注册名一致
2. Dubbo服务注册失败
报错内容:
Caused by: org.apache.dubbo.registry.zookeeper.util.CuratorFrameworkUtils.buildCuratorFramework
原因:
- Dubbo与Zookeeper连接问题
- 连接超时
解决方案:
dubbo:
registry:
address: zookeeper://192.168.1.100:2181
timeout: 60000
3. 循环依赖问题
报错内容:
Error contacting service. It is probably not running.
原因:
- Dubbo消费者与提供者之间存在循环依赖
解决方案:
- 调整服务间的依赖关系
- 使用接口抽象降低耦合度
- 考虑使用延迟加载
4. Zookeeper客户端连接失败
报错内容:
org.apache.zookeeper.KeeperException$ConnectionLossException:
KeeperErrorCode = ConnectionLoss for /path
原因:
- 网络不稳定
- Zookeeper服务器过载
解决方案:
- 增加连接超时时间
- 检查网络稳定性
- 优化Zookeeper服务器性能
五、Zookeeper启动问题
1. Zookeeper启动失败
报错内容:
Starting Zookeeper ...............FAILED TO START
原因:
- Zookeeper配置文件错误
- 数据目录不存在
- 端口被占用
解决方案:
- 检查zoo.cfg配置
- 创建数据目录
- 检查端口占用
2. Zookeeper端口配置错误
报错内容:
ZooKeeper server is not running on port 2181
原因:
- Zookeeper配置文件中clientPort配置错误
解决方案:
修改zoo.cfg文件中的clientPort:
clientPort=2181
解决方案总结
| 问题类型 | 报错内容 | 解决方案 |
|---|---|---|
| 依赖缺失 | NoClassDefFoundError | 添加正确的Zookeeper和Curator依赖 |
| 配置错误 | failed to connect to zookeeper server | 检查连接地址和配置文件 |
| 端口冲突 | Error contacting service. It is probably not running | 检查端口占用,修改clientPort |
| 服务注册失败 | Connection refused | 确认Zookeeper服务已启动 |
| 连接超时 | failed to connect to zookeeper server | 增加连接超时时间 |
| 数据目录权限 | Cannot create data directory | 创建目录并设置权限 |
| Dubbo整合问题 | @DubboReference dependencies is failed | 添加@EnableDubbo注解和正确依赖 |
| 循环依赖 | Error contacting service. It is probably not running | 调整服务依赖关系 |
最佳实践建议
-
版本匹配:
- Zookeeper 3.6.1 + Curator 4.0.1 + Spring Cloud Alibaba 2.2.6.RELEASE
-
配置检查:
spring: cloud: zookeeper: connect-string: 192.168.1.100:2181 connection-timeout: 10000 -
Zookeeper启动:
- 确保dataDir目录存在
- 确保端口2181未被占用
- 确保Java环境配置正确
-
依赖管理:
<dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-framework</artifactId> <version>4.0.1</version> </dependency> <dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-recipes</artifactId> <version>4.0.1</version> </dependency> <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.6.1</version> </dependency> -
错误排查:
- 检查Zookeeper日志(logs目录)
- 确认Zookeeper服务状态
- 验证连接地址和端口
关注公众号获取更多技术干货 !

© 版权声明
文章版权归作者所有,未经允许请勿转载。