Zookeeper源码编译(Zookeeper 3.4.11)并IDEA启动

那年仲夏 提交于 2020-04-05 17:55:34

一、 准备工作

1.下载Ant并安装 

     由于Zookeeper是由Ant编译,需下载Ant并安装配置 下载地址:https://ant.apache.org/bindownload.cgi

2.安装Ant:

  解压:

配置环境变量:

Path            D:\devople\apache-ant-1.10.6\bin

输入ant -version验证:

出现Unable to locate tools.jar. Expected to find it in xxx  是由于本地JAVA_HOME未配置,配置完JAVA_HOME就可以了。

再次验证:

至此Ant安装成功。

   3.下载Zookeeper源码

      下载地址: https://github.com/apache/zookeeperhttps://github.com/apache/zookeeper

      由于地址连接是最新版本的Zookeeper源码,本次选用的是Zookeeper 3.4.11版本。

下载zip文件。

解压:

    

二、编译Zookeeper源码   

ant eclipse 编译

编译出错:

下载ant-eclipse-1.0.bin.tar.bz2失败

解决办法:

将bulild.xml中的

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

替换成如下地址

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

再次编译,编译成功:

三、导入Zookeeper源码到IDEA

由于使用ant eclipse编译的是Eclipse工程的项目,本次需要导入IDEA中。

选择导入Eclipse项目。一路Next应该没问题。(选择jdk1.8)

 

四、运行Zookeeper

1.将conf目录下的zoo_sample.cfg复制为zoo.cfg

2.配置zoo.cfg

设置dataDir 和 dataLogDir两个值。其他的值可默认。(本地运行,不是集群模式)

3.找到运行主类  org.apache.zookeeper.server.ZooKeeperServerMain

4.新建Run Configurations,将zoo.cfg全路径导入Program arguments中

5.运行:

     问题:日志无法输出。

log4j:WARN No appenders could be found for logger (org.apache.log4j.jmx.HierarchyDynamicMBean).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

      解决办法:将log4j.properties的全路径名作为value拷贝到Run Configurations中

-Dlog4j.configuration=file:D:/learnspace/idea/learnning_code/zookeeper-release-3.4.11/conf/log4j.properties


再次运行 org.apache.zookeeper.server.ZooKeeperServerMain:

成功启动,并输出日志。

但是:可能会遇到如下问题:

Error:(21, 61) java: 找不到符号
  符号:   类 Info
  位置: 程序包 org.apache.zookeeper.version

五、解决【找不到符号Info】

解决方法:在org.apache.zookeeper.version.util包里有个VerGen.java文件,运行这个文件来生成Info.Java,我理解这个是用来在Zookeeper每次发布版本的时候用来固定生成版本号和日期的。在VerGen.Java的main方法上有提示

这里需要把 org.apache.zookeeper.version.util.VerGen.java 的main方法上添加三个运行参数,args[] ,并且把自动编译删除,要不然运行main方法时,整个项目都会编译。

然后再手动编译VerGen.java 

运行VerGen.java  main方法

会生成Info.java

然后把Info.java 拖到  org.apache.zookeeper.version 包下就OK了

之后重新编译并运行   org.apache.zookeeper.server.ZooKeeperServerMain

成功启动,并输出日志。


————————————————
版权声明:本文为CSDN博主「__Simon'」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/simon_09010817/java/article/details/91843048

 

 

 

 

 

 

 

 

 

 

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!