一、搭建ant环境

1、下载ant&将ant解压至安装目录

http://ant.apache.org/bindownload.cgi

2、配置环境变量

ANT_HOME:配置ant的安装目录,如C:\Program Files\Apache\apache-ant-1.10.1

PAT中加:C:\Program Files\Apache\apache-ant-1.10.1\bin

CLASSPATH中加:C:\Program Files\Apache\apache-ant-1.10.1\lib

3、验证ant

注:第一个命令报错,是因为ant编译是从build.xml开始。

二、编译Zookeepeer源码

1、下载zookeepeer源码

https://github.com/apache/zookeeper

2、使用ant eclipse命令编译zookeepeer

注意,一定要在zookeepeer的源码文件夹的根目录。

这里就会一直下载依赖包,然后编译,。。。,直至成功,时间比较久。

3、编译错误解决

错误1:编译完成后,用IDE打开(这里我用的是Eclipse,机器上装的JDK为1.8),编译错误,显示Java compiler level does not match 和 '<>' operator is not allowed for source level below 1.7错误,说明我们的JDK版本设置的有问题,我们需要将这个工程的JDK调整为1.7。

调整方法为:右键项目--属性--勾选Enable project  specific  settings--Compiler compliance level--选择1.7--OK

错误2:org.apache.zookeeper.Version报错,org.apache.zookeeper.version.Info这个接口找不到。

这个接口可以通过运行org.apache.zookeeper.version.util.VerGen的Main方法来生成这个文件,方法需要传递3个参数,这里我直接固定了参数,如下所示:

  1. public static void main(String[] args2) {
  2. String[] args =new String[]{"1.0.0"," ",""};
  3. System.out.println("args's length:"+args.length);
  4. if (args.length != 3)
  5. printUsage();
  6. try {
  7. Version version = parseVersionString(args[0]);
  8. if (version == null) {
  9. System.err.println(
  10. "Invalid version number format, must be \"x.y.z(-.*)?\"");
  11. System.exit(1);
  12. }
  13. String rev = args[1];
  14. if (rev == null || rev.trim().isEmpty()) {
  15. rev = "-1";
  16. } else {
  17. rev = rev.trim();
  18. }
  19. generateFile(new File("."), version, "", args[2]);
  20. } catch (NumberFormatException e) {
  21. System.err.println(
  22. "All version-related parameters must be valid integers!");
  23. throw e;
  24. }
  25. }

最后生成这个org.apache.zookeeper.version.Info.java这个文件,整个Zookeepeer工程编译成功。

PS:对于Info.java接口文件的生成,你也可以直接观察一下源码,直接新建这个接口文件,然后把相应的字段和值补全就好了。

参考文档

https://www.cnblogs.com/ivictor/p/4994112.html

http://blog.csdn.net/zhangyuan19880606/article/details/51508294

http://blog.csdn.net/puma_dong/article/details/52000283

搭建Zookeepeer源码工程的更多相关文章

  1. Spring1:Spring简介、环境搭建、源码下载及导入MyEclipse

    框架学习前言 这个模块是面向Spring的,Spring的学习我是这么想的: 1.简单介绍Spring,主要是从网上借鉴一些重点 2.尽量说明清楚Spring的使用方法以及细节点 3.尽量以自己的理解 ...

  2. 基于Eclipse搭建Hadoop源码环境

    Hadoop使用ant+ivy组织工程,无法直接导入Eclipse中.本文将介绍如何基于Eclipse搭建Hadoop源码环境. 准备工作 本文使用的操作系统为CentOS.需要的软件版本:hadoo ...

  3. 搭建Spark源码研读和代码调试的开发环境

    转载自https://github.com/linbojin/spark-notes/blob/master/ide-setup.md 搭建Spark源码研读和代码调试的开发环境 工欲善其事,必先利其 ...

  4. 【深入浅出 Yarn 架构与实现】1-2 搭建 Hadoop 源码阅读环境

    本文将介绍如何使用 idea 搭建 Hadoop 源码阅读环境.(默认已安装好 Java.Maven 环境) 一.搭建源码阅读环境 一)idea 导入 hadoop 工程 从 github 上拉取代码 ...

  5. Django搭建及源码分析(三)---+uWSGI+nginx

    每个框架或者应用都是为了解决某些问题才出现旦生的,没有一个事物是可以解决所有问题的.如果觉得某个框架或者应用使用很不方便,那么很有可能就是你没有将其使用到正确的地方,没有按开发者的设计初衷来使用它,当 ...

  6. [原创]在Windows和Linux中搭建PostgreSQL源码调试环境

    张文升http://ode.cnblogs.comEmail:wensheng.zhang#foxmail.com 配图太多,完整pdf下载请点这里 本文使用Xming.Putty和VMWare几款工 ...

  7. IDEA创建Tomcat8源码工程流程

    上一篇文章的产出,其实离不开网上各位大神们的辅助,正是通过他们的讲解,我才对Tomcat的结构有了更进一步的认识. 但在描述前后端交互的过程中,还有很多细节并没有描述到位,所以就有了研究Tomcat源 ...

  8. netty的调优-及-献上写过注释的源码工程

    Netty能干什么? Http服务器 使用Netty可以编写一个 Http服务器, 就像tomcat那样,能接受用户发送的http请求, , 只不过没有实现Servelt规范, 但是它也能解析携带的参 ...

  9. 在IDEA中搭建Java源码学习环境并上传到GitHub上

    打开IDEA新建一个项目 创建一个最简单的Java项目即可 在项目命名填写该项目的名称,我这里写的项目名为Java_Source_Study 点击Finished,然后在项目的src目录下新建源码文件 ...

随机推荐

  1. Linux高可靠技术

    1.进程挂死时,有后台监控程序检测重新拉起. 2.进程占用系统资源超过ulimit限定的资源时,会被ulimit杀死,同时配合后台监控程序,重新拉起进程,实现进程可靠性. 3.Linux系统的高可靠性 ...

  2. Angular基础(六) DI

      一.依赖注入 a) 如果模块A需要依赖模块B,通常的做法是在A中导入B,import{B} from ‘B’,但有一些场合需要解除这种直接依赖,比如单元测试时需要mock一个B对象.还有时要创建B ...

  3. Android ViewPager + Fragment实现滑动页面

    效果: PagerData类: package com.cloud.viewpagerdemo; import java.io.Serializable; class PagerData implem ...

  4. [20171206]rman与truncate2.txt

    [20171206]rman与truncate2.txt --//上午测试发现truncate的表在做rman备份时还要做8个extents的备份.--//不知道自己的猜测是否正确,选择一个使用UNI ...

  5. C#操作Exchange配置

    1.客户端配置:运行gpedit.msc进入本地组策略管理器,计算机配置>管理模版>Windows组件>WinRM>WinRM客户端启用允许未加密通信:启用受信任的主机并添加e ...

  6. 第五章 绘图基础(SINEWAVE)

    //SINEWAVE.C -- Sine Wave Using Polyline (c) Charles Petzold, 1998 #include <Windows.h> #inclu ...

  7. Java jni字符串转换

    1.jstring转QString 对于Qt5.2以上(含)可以用QAndroidJniObject::toString(),详见这里:https://stackoverflow.com/questi ...

  8. C# 动态方法和静态方法的区别

    C# 动态方法和静态方法的区别 (转) 动态方法与静态方法的区别: 1,使用方法上的区别:动态方法,在使用时需要先创建实例,才能调用实例方法,而静态方法则不需要,直接使用即可. 示例代码如下:静态方法 ...

  9. python redirect和render的区别

    render是渲染变量到模板中,而redirect是HTTP中1个跳转的函数,一般会生成302状态码.

  10. Kali下Ettercap 使用教程+DNS欺骗攻击

    一.Ettercap 使用教程 EtterCap是一个基于ARP地址欺骗方式的网络嗅探工具.它具有动态连接嗅探.动态内容过滤和许多其他有趣的技巧.它支持对许多协议的主动和被动分析,并包含许多用于网络和 ...