zookeeper 源码环境搭建

我使用的开发环境

  • idea 2019.3
  • jdk1.8
  • zookeeper 3.8.0

1、获取源码

zookeeper 是 apache 的开源项目,在 github 上有开源仓库https://github.com/apache/zookeeper.git,克隆到本地即可使用
zookeeper 源码环境搭建_第1张图片
这是一个标准的 maven 项目

2、IDEA 导入项目

idea 打开第一步克隆的源码
zookeeper 源码环境搭建_第2张图片
找到克隆的源码
zookeeper 源码环境搭建_第3张图片
打开之后如下图
zookeeper 源码环境搭建_第4张图片
切换分支到3.8.0
zookeeper 源码环境搭建_第5张图片

3、修改配置文件

zookeeper 源码环境搭建_第6张图片
可以看到,这里和二进制安装包一样,有 conf 和 bin
那就先复制一个配置文件,修改一下端口号
zookeeper 源码环境搭建_第7张图片

4、找到启动类,启动服务

二进制安装的时候是执行的 bin 目录下的 zkServer.sh 脚本文件,那么看一下这个文件

可以看到,启动服务其实是调用的 org.apache.zookeeper.server.quorum.QuorumPeerMain 这个类,看一下这个类
zookeeper 源码环境搭建_第8张图片
这个类里有 main 方法,调用一下

啊哦,编译报错了,那么先用maven编译一下

编译完成会生成这些找不到的类文件,再次执行 main 方法

这次说没有参数,转换不了配置文件,那么就设置一下配置文件
zookeeper 源码环境搭建_第9张图片
再次启动,又报错
zookeeper 源码环境搭建_第10张图片
这是因为pom文件里的一些依赖是 provided,只在编译时候生效,去掉即可


zookeeper 源码环境搭建_第11张图片
如果在调试的过程中遇到类找不到,也可以看一下依赖是否 provided
再次启动

这次启动成功

5、启动客户端

找到 zkCli.sh,从中找到启动类


先运行一下,报了一堆错

这里是又有依赖找不到了
zookeeper 源码环境搭建_第12张图片

在服务器二进制安装的的时候启动客户端是要指定 zookeeper 服务的ip:端口号的,这里也指定一下
zookeeper 源码环境搭建_第13张图片
这一次启动成功

但是看着和服务器上启动的客户端输出不一样

源码启动输出有如下内容

预计是依赖找不到

找到这个依赖加入进来,再次启动

这次启动是和服务器启动一样了,但是一直在输出心跳日志,这是因为没有指定日志文件,zookeeper新版本用的日志是logback,指定一下日志文件

-Dlogback.configurationFile=file:E:\workspace\test-workspace\zookeeper\conf\logback.xml

zookeeper 源码环境搭建_第14张图片
启动结果

这次启动看似很正常了,但是输入命令却没有反应,网上查是因为 jline 依赖的问题,jline 是一个控制台交互输入输出的工具,具体是什么原因,我也没搞明白,虚拟机参数加上如下参数

-Djline.terminal=jline.UnsupportedTerminal

zookeeper 源码环境搭建_第15张图片

再次启动

这一次完美启动,输入命令正常响应。

好了,zookeeper 源码环境搭建成功,可以愉快的调试和学习 zookeeper 源码了!

你可能感兴趣的:(zookeeper,java-zookeeper,zookeeper,java)