zookeeper源码_IntelliJ IDEA导入Zookeeper源码

我在使用IDEA导入zookeeper并且尝试运行时,遇到了很多的问题, 如果大家也遇到类似的需求,可以参考这篇文章来做

我会基于ant和maven两种形式来构建zookeeper的源码

环境准备

下载zookeeper源码

在github上搜索zookeeper, 一般来说,第一个结果就是zookeeper的源码
也可以通过直达通道https://github.com/apache/zookeeper快速进去
我们下载源码,一定不要直接clone他的正在维护的分支,而是要进入release菜单,下载对外发布的版本。

cb05861dee9be183098e36c9e292bf63.png

本次操作我们使用zookeeper-3.5.5版本。

下载zip或者tar.gz都可以。也可以通过直达通道直接下载

配置ant

zookeeper默认是基于ant来构建,如果有同学不了解ant,也没必要学习了,毕竟现在使用ant来构建项目的已经很少了。

ant的下载地址https://ant.apache.org/bindownload.cgi

下载好之后,在环境变量里面配置几个东西

123
ANT_HOMT=${ant_home}  //ant_home为自己本地安装的目录PATH=%ANT_HOME%/binCLASSPATH=%ANT_HOME%/lib

配置好之后,就可以在cmd中执行ant -version. 会得到下面这段信息,说明安装成功

1
Apache Ant(TM) version 1.9.14 compiled on March 12 2019

配置maven

由于我们会用两种形式来构建,所以也需要把maven的环境配置好。

maven的下载地址http://maven.apache.org/download.cgi

我下载的是apache-maven-3.6.1-bin.tar.gz
只需要解压到指定目录就行

配置环境变量

12
M2_HOME=${maven_home} //替换成自己解压出来的目录PATH=%M2_HOME%/bin

同样,输入mvn -version命令,如果得到下面的信息,说明安装成功

12
Apache Maven 3.5.0 (ff8f5e7444045639af65f6095c62210b5713f426; 2017-04-04T03:39:06+08:00)Maven home: /Users/xxx/Documents/software/apache-maven-3.5.0

需要注意的是,如果要用到maven来构建,会要从远程私服上下载jar包,默认会从中央仓库上下载,速度很慢。可以把maven的远程私服改成阿里的仓库,具体的教程我就不再这里说明,大家可以搜索下关键字【maven 阿里】就会有相应的教程来指导

基于ant构建zookeeper源码

编译

进入到zookeeper解压的根目录下,执行

1
ant eclipse

显示如下结果,表示编译成功

c89847cd0339dcd1b6abf4fa057b52dd.png

导入到IDEA中

选择import project

b6558899bdf0cb0f1a437239797d5f10.png

接着,选择eclipse,然后一直下一步就行

4f03eae2596b2e53fe23f15ff05851ae.png

启动zookeeper

针对单机版本和集群版本,分别对应两个启动类

单机:ZooKeeperServerMain

集群:QuorumPeerMain

源码调试,不需要搭建集群,所以直接基于单机环境来启动即可

配置run configuration

按照下面这个位置进行配置

e18a84fbbd0650d845f5fc234f196088.png

添加application

6d05885dcc259b090c7b73202f32d1a3.png

红色标注部分,分别是ZookeeperServerMain这个类的位置。以及main方法的启动参数zoo.cfg

zoo.cfg默认是不存在的,但是在源码根目录有一个conf目录,里面提供了zoo_sample.cfg。我们只需要复制一份改一个名字即可

fb477c4f3af954e3257a79b263bd3887.png

配置好之后,直接启动即可

65cdb10f4f81010fcf5b7eb329eba5fd.png

配置日志输出

默认情况下,控制台没有把日志打印出来,应该是没有找到log4j.properties。

配置如下jvm启动参数,指定log4j.properties路径即可

1
-Dlog4j.configuration=file:/Users/mic/Documents/software/opensource/zookeeper-release-3.5.5/conf/log4j.properties

启动之后,会输出如下日志,表示启动成功, 默认使用2181的端口号。

1234
2019-07-18 09:49:28,391 [myid:] - INFO  [main:JettyAdminServer@112] - Started AdminServer on address 0.0.0.0, port 8080 and command URL /commands2019-07-18 09:49:28,401 [myid:] - INFO  [main:ServerCnxnFactory@135] - Using org.apache.zookeeper.server.NIOServerCnxnFactory as server connection factory2019-07-18 09:49:28,407 [myid:] - INFO  [main:NIOServerCnxnFactory@673] - Configuring NIO connection handler with 10s sessionless connection timeout, 1 selector thread(s), 8 worker threads, and 64 kB direct buffers.2019-07-18 09:49:28,410 [myid:] - INFO  [main:NIOServerCnxnFactory@686] - binding to port 0.0.0.0/0.0.0.0:2181

连接测试

zkCli

用zkCli工具来连接。
执行:./zkCli.sh -server 服务器ip:2181

telnet

使用telent 命令, 可以测试telnet ip 2181

maven形式的导入

zookeeper源码没有使用maven来构建,如果一定要用maven,可以自己创建一个maven工程。把zookeeper-server的代码全部拷贝过来即可。

其实本质上就是,自己把它改造成一个maven项目

6a200d0d4af7c9174873e36aead29588.png

如果你觉得文章不错,文末的赞 ? 又回来啦,记得给我「点赞」和「在看」哦~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值