基于Idea启动zookeeper源码

目录

  • 前言
  • 一、安装ant,并添加环境变量
  • 二、zookeeper源码并构建
  • 三、idea导入zookeeper
  • 四、总结


前言

研究zookeeper的源码,第一步就是搭建环境,利用idea启动zk的源码,过程比较简单,网上的教程也是不少,但是搞起来还是会遇到各种各样的问题,这里做个记录。

环境介绍
1、zookeeper源码3.5.5版本
2、idea编辑器
3、基于ant构建zookeeper


一、安装ant,并添加环境变量

1、下载地址:https://ant.apache.org/bindownload.cgi
2、下载版本:1.10.7,zip包
3、解压,配置环境变量ANT_HOME=D:\apache-ant-1.10.7-bin\apache-ant-1.10.7
4、编辑Path,增加%ANT_HOME%\bin

二、zookeeper源码并构建

1、下载zk源码: https://gitee.com/apache/zookeeper
2、切换到分支:git checkout branch-3.5.5
3、打开cmd或者shell,切换到Zookeeper的解压目录下,即build.xml的当前目录下。用ant eclipse命令进行编译。构建成功会出现build success字样。
基于Idea启动zookeeper源码_第1张图片

三、idea导入zookeeper

1、使用idea导入eclipse项目
基于Idea启动zookeeper源码_第2张图片
2、选择eclipse项目,一直next即可。
基于Idea启动zookeeper源码_第3张图片

3、启动项目,测试。
1、启动zookeeper服务,找到文件ZooKeeperServerMain,并调用main方法。
2、发现报错,Version.java下的类Info无法找到,需要新建这个类。
3、新建Info文件,即可

package org.apache.zookeeper.version;

public interface Info {
    int MAJOR=1;
    int MINOR=0;
    int MICRO=0;
    String QUALIFIER=null;
    int REVISION=-1; //TODO: remove as related to SVN VCS
    String REVISION_HASH="1";
    String BUILD_DATE="2019-3-4";
}

注意:如果还有其他类找不到,需要多进行几次ant eclipse,或者重新拉zk的代码,重新执行ant eclipse。这里我也是遇到了这种情况,经过几次就可以了。至于为什么还没有得到答案!

1、如果启动过程遇到以下情况:
基于Idea启动zookeeper源码_第4张图片
需要配置log4j的配置,参考下一步的配置。

2、如果遇到缺少org.apache.zookeeper.data等相关包
基于Idea启动zookeeper源码_第5张图片
但是不影响项目运行, 因为只是缺少源码包, 而class文件并不缺少
基于Idea启动zookeeper源码_第6张图片

4、配置启动ZooKeeperServerMain参数
基于Idea启动zookeeper源码_第7张图片
5、重新执行ZooKeeperServerMain的main方法,启动zookeeper服务。
在这里插入图片描述
6、注意8080端口不要被其他进程占用,因为启动需要这个端口。

7、在本地使用zkCli.cmd测试服务是否启动
基于Idea启动zookeeper源码_第8张图片
接下来可以尝试zookeeper里的各种测试用例,debug代码,畅游源码了。

四、总结

1、启动中也有一些依赖包找不到,我们将pom文件中的scope标签注释掉即可,如下:
基于Idea启动zookeeper源码_第9张图片2、idea导入过程中不用添加maven选项,zookeeper使用ant构建项目的,它是eclipse项目,不支持idea,通过idea导入eclipse项目格式,最好不要使用maven构建项目,如下:

ant eclipse

基于Idea启动zookeeper源码_第10张图片

3、启动中的参数设置,出现日志警告,添加

-Dlog4j.configuration=file:D:\zookeeper\zookeeper-release-3.5.5\conf\log4j.properties

基于Idea启动zookeeper源码_第11张图片

4、单机服务端ZooKeeperServerMain,集群服务端QuorumPeerMain需要添加配置文件位置参数,如下:
基于Idea启动zookeeper源码_第12张图片
5、客户端ZooKeeperMain需要配置服务地址,如下:
基于Idea启动zookeeper源码_第13张图片

参考网址:
zookeeper(6)基于Idea启动zookeeper源码,开启源码之旅

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