Zookeeper源码本地编译运行
1、先下载Zookeeper源码。
github地址: https://github.com/apache/zookeeper
直接拉取master分支,当前的版本是3.6.1
2、使用IDEA打开刚下载的源码包
打开后等maven下载依赖:
3、从bin目录下查看zkServer.cmd,找到启动的mian方法。
我们可以看到,启动类是org.apache.zookeeper.server.quorum.QuorumPeerMain
4、配置debug的参数
先打开QuorumPeerMain类,Edit ‘QuorumPeerMain.main()’,对启动参数进行配置:
配置如下:
zoo.cfg从conf目录下拷贝zoo-sample.cfg修改名字就可以
vm options: -Dlog4j.configuration=file:conf\log4j.properties
Program arguments: conf/zoo.cfg
配置完成后,还需要修改一些设置,否则启动报错
(1)删除Zookeeper-server模块中src下载的test包,测试类在1.8下会有些错误
(2)修改Zookeeper-server模块中pom.xml,对下面四个依赖注释掉 scope,否则会导致ClassNotFound错误;如果还有ClassNotFound,注释掉依赖的scope就可以。
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-server</artifactId>
<!-- <scope>provided</scope>-->
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-servlet</artifactId>
<!-- <scope>provided</scope>-->
</dependency>
<dependency>
<groupId>io.dropwizard.metrics</groupId>
<artifactId>metrics-core</artifactId>
<!-- <scope>provided</scope>-->
</dependency>
<dependency>
<groupId>org.xerial.snappy</groupId>
<artifactId>snappy-java</artifactId>
<!-- <scope>provided</scope>-->
</dependency>