个人随笔
目录
八、Zookeeper eclipse源码环境搭建
2020-12-14 17:27:49

在此之前,我一直尝试搭建各种源码环境,比如Spring,Springboot,MyBatis,以及这个Zookeeper,不知道怎么回事没有一个成功的,我在想,尼玛不是应该从github把源码下载下来,然后导入eclipse就直接运行完美么,然后每一次都报无数的错误,到处都是红XX,maven加载依赖以及pom.xml也到处都是红XX。最后真让人心灰意冷,不管怎么百度都没有用,只能靠maven项目调试来阅读源码,不过,今天,不,经过几天的尝试,终于,搭建成功看了一个框架的源码环境。得好好记下来!

一、环境准备

zookeeper比较奇怪,用的是Ant来构建的,不像spring或者其他用Maven或者Gradle来构建,也不知道为啥GitHub的项目都是需要先用Ant或者Maven或者Gradle构建才导入IDEA的。

1、Ant环境搭建

参考我的笔记:https://www.suibibk.com/topic/787360877572521984

2、Zookeeper源码下载

从github下载https://github.com/apache/zookeeper.git 我这里下载的是zookeeper-branch-3.5.5版本

二、Ant构建项目

1、执行ant eclipse构建

这里其实说简单不简单,说难不难,cmd进入zookeeper-branch-3.5.5目录下执行如下命令然后慢慢等就可以了。

  1. D:\Work\Source>cd zookeeper-branch-3.5.5
  2. D:\Work\Source\zookeeper-branch-3.5.5>ant eclipse

2、失败原因分析

这里来重点说说ant eclipse执行失败的问题:

上述命令会下载ant-eclipse-1.0.bin.tar.bz2文件,老是下载不成功,无法继续下去,修改源码中build.xml中的配置,将地址:

  1. get src="http://downloads.sourceforge.net/project/ant-eclipse/ant-eclipse/1.0/ant-eclipse-1.0.bin.tar.bz2"

更换成如下地址

  1. get src="http://ufpr.dl.sourceforge.net/project/ant-eclipse/ant-eclipse/1.0/ant-eclipse-1.0.bin.tar.bz2"

话说有人会发现缺少依赖包 commons-collections,在ivy.xml文件中加入如下配置:

  1. <dependency org="commons-collections" name="commons-collections" rev="3.0"/>

我这里到没有遇到这个问题。

我遇到最恶心的问题就是maven一直下载不了,卡在

  1. [ivy:retrieve]...

超级久,然后我去配置ivysettings.xml里把全部改为阿里云的,然后还是发现有些包还是下载不了,真崩溃,然后今天用别的网试了下,不需要改都下载成功了,成功界面如下:

三、导入Eclipse

1、导入为普通的Java项目

Ant构建项目如果网络没问题的话很快就可以了的,然后我们就可以导入Eclipse,这里有一个大坑,正常用户看到项目下面有个pom.xml,然后就觉得肯定是maven项目,二话不说就导入为maven项目,然后发现无数的报错,怎么改配置pom.xml都是红XX,然后怎么启动都报错,这里一定要注意:zk源码不是用maven构建的,所以在导入的时候不能选maven的方式,而是应该使用eclipse的方式导入!

四、测试

1、启动Zookeeper服务

找到类ZooKeeperServerMain的mian方法,右键加入如下参数:


配置文件,指定dataDir为本机下的目录:

  1. D:/Work/Source/zookeeper-branch-3.5.5/conf/zoo.cfg

日志:

  1. -Dlog4j.configuration=file:D:/Work/Source/zookeeper-branch-3.5.5/conf/log4j.properties

错误1:在运行的时候,会发现报错误:is not allowed for source level below 1.7 ,这是要求我们的编译环境必须1.7以上才行。

  • 1、右键项目—属性—Java Compiler—勾选Enable project specific settings
  • 2、Compiler compliance level—选择1.7或者1.8
  • 3、勾选Use default compilance settings
  • 4、apply

错误2:运行的时候会发现Version这个类报错
org.apache.zookeeper.Version中发现很多红色警告,很明显少了org.apache.zookeeper.version.Info类。
查询源码得知是用来发布的时候生成版本用的,我们只是研读源码,又不发布版本所以直接写死就ok了。

  1. package org.apache.zookeeper.version;
  2. public interface Info {
  3. int REVISION = 1;
  4. int MAJOR = 3;
  5. int MINOR = 5;
  6. int MICRO = 6;
  7. String QUALIFIER = null;
  8. String REVISION_HASH = "c11b7e26bc554b8523dc929761dd28808913f091";
  9. String BUILD_DATE = "10/08/2019 20:18 GMT";
  10. }

最后发现没有任何错误了,完美,项目如下,满足感爆棚。

启动后可以看见日志成功了。

2、启动客户端

找到类ZooKeeperMain的mian方法,右键加入如下参数:


要执行的命令:

  1. -server 127.0.0.1:2181 ls /

日志:

  1. -Dlog4j.configuration=file:D:/Work/Source/zookeeper-branch-3.5.5/conf/log4j.properties

可以看到结果如下:

可以看到执行成功了,输出了一个默认节点zookeeper

五、总结

1、源码环境搭建一定要看用什么构建的是Ant还是maven还是gradle
2、一定要仔细看错误原因,不要慌,逢山开路,遇水搭桥

 481

啊!这个可能是世界上最丑的留言输入框功能~


当然,也是最丑的留言列表

有疑问发邮件到 : suibibk@qq.com 侵权立删
Copyright : 个人随笔   备案号 : 粤ICP备18099399号-2