zookeeper源码3.6.0本地idea构建运行
环境信息
IntelliJ IDEA 2019.2.4 (Ultimate Edition)
Build #IU-192.7142.36, built on October 29, 2019
1.下载源码
方式一:从国外 Github 下载 zookeeper 源码 Go:
git clone --branch release-3.6.0 git@github.com:apache/zookeeper.git
方式二:从国内 Gitee 下载 zookeeper 源码镜像 Go:
git clone --branch release-3.6.0 git@gitee.com:apache/zookeeper.git
2.源码构建
方式一:进到根⽬录下, 执⾏
mvn clean install -DskipTests
方式二:idea 操作:先把跳过单元测试选上,再分别执行 clean 和 install
3.启动主程序
- MainClass:
org.apache.zookeeper.server.ZooKeeperServerMain
- Program Arguments:
conf\zoo.cfg
- Use classpath of module: 选择
zookeeper
- 勾上
Include dependencies with 'Provided' scope
解释:我从项目根目录拷贝了 zoo_sample.cfg 文件并重命名为 zoo.cfg,主要修改 dataDir 和 clientPort。
因为 zoo_sample.cfg 中的 dataDir 是 Linux 文件路径,而我是在 Windows 平台上运行,所以才修改的。
dataDir=D:\\tmp\\zookeeper
修改 clientPort 主要是因为端口占用异常
Caused by: java.net.BindException: Address Already in use: bind
clientPort=2182
解释:勾上 Include dependencies with 'Provided' scope
,是因为我出现了启动时找不到类的异常 Caused by: java.lang.ClassNotFoundException: com.codahale.metrics.Reservoir
:
4.拷贝log4j.properties
将 conf\log4j.properties
拷贝到目录 zookeeper-server\src\main\resources
下:
同时在 Project Structure 中把 zookeeper-server\src\main\resources
标记为 Resources :
*生成代码的操作
这一步可以放在构建源码之后做,我现在不确定这一步不做会有多大影响,所以放在了这边。
参考文档
zookeeper源码3.6.0本地idea构建运行 阅读