IntelliJ IDEA导入Zookeeper源码

535次阅读  |  发布于4年以前

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

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

环境准备

下载zookeeper源码

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

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

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

配置ant

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

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

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

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

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

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 只需要解压到指定目录就行

配置环境变量

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

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

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解压的根目录下,执行

ant eclipse

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

导入到IDEA中


选择import project

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

启动zookeeper

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

单机:ZooKeeperServerMain

集群:QuorumPeerMain

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

配置run configuration

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

添加application

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

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

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

配置日志输出

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

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

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

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

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 /commands
2019-07-18 09:49:28,401 [myid:] - INFO  [main:ServerCnxnFactory@135] - Using org.apache.zookeeper.server.NIOServerCnxnFactory as server connection factory
2019-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项目

Copyright© 2013-2020

All Rights Reserved 京ICP备2023019179号-8