Zookeeper使用Ant 编译源代码报错

本文介绍了在搭建Zookeeper过程中遇到的下载失败问题及其解决方案,并详细解释了如何通过修改配置文件来解决依赖问题。此外,还提供了启动Zookeeper的两种方法及各参数的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

错误问题:
E:\1_Zookeeper\WS_Zookeeper\zookeeper-master>ant.bat eclipse
Buildfile: E:\1_Zookeeper\WS_Zookeeper\zookeeper-master\build.xml
ant-eclipse-download:
      [get] Getting: http://downloads.sourceforge.net/project/ant-eclipse/ant-eclipse/1.0/ant-eclipse-1.0.bin.tar.bz2
      [get] To: E:\1_Zookeeper\WS_Zookeeper\zookeeper-master\src\java\ant-eclipse-1.0.bin.tar.bz2
         [get] http://downloads.sourceforge.net/project/ant-eclipse/ant-eclipse/1.0/ant-eclipse-1.0.bin.tar.bz2 
moved to http://101.110.118.69/downloads.sourceforge.net/project/ant-eclipse/ant-eclipse/1.0/ant-eclipse-1.0.bin.tar.bz2
      [get] http://101.110.118.69/downloads.sourceforge.net/project/ant-eclipse/ant-eclipse/1.0/ant-eclipse-1.0.bin.tar.bz2 
 moved to https://ncu.dl.sourceforge.net/project/ant-eclipse/ant-eclipse/1.0/ant-eclipse-1.0.bin.tar.bz2
      [get] Error getting http://downloads.sourceforge.net/project/ant-eclipse/ant-eclipse/1.0/ant-eclipse-1.0.bin.tar.bz2 
 to E:\1_Zookeeper\WS_Zookeeper\zookeeper-master\src\java\ant-eclipse-1.0.bin.tar.bz2


BUILD FAILED
E:\1_Zookeeper\WS_Zookeeper\zookeeper-master\build.xml:1800: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
        at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)
        at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1904)
        at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:279)
        at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:273)
        at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1446)
        at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:209)
        at sun.security.ssl.Handshaker.processLoop(Handshaker.java:901)
        at sun.security.ssl.Handshaker.process_record(Handshaker.java:837)
        at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1023)
        at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1332)
        at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1359)
        at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1343)
        at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:563)
        at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185)
        at sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:153)
        at org.apache.tools.ant.taskdefs.Get$GetThread.openConnection(Get.java:737)
        at org.apache.tools.ant.taskdefs.Get$GetThread.openConnection(Get.java:757)
        at org.apache.tools.ant.taskdefs.Get$GetThread.openConnection(Get.java:757)
        at org.apache.tools.ant.taskdefs.Get$GetThread.get(Get.java:650)
        at org.apache.tools.ant.taskdefs.Get$GetThread.run(Get.java:640)
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
        at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:385)
        at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:292)
        at sun.security.validator.Validator.validate(Validator.java:260)
        at sun.security.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:326)
        at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:231)
        at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:126)
        at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1428)
        ... 15 more
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
        at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:196)
        at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:268)
        at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:380)
        ... 21 more




1问题解决:
上述命令会下载ant-eclipse-1.0.bin.tar.bz2文件,老是下载不成功,无法继续下去,
1:修改源码中build.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"
2:还发现缺少依赖包 commons-collections,在ivy.xml文件中加入如下配置:
<dependencyorg="commons-collections"name="commons-collections"rev="3.0"/>


上述两个问题解决后,再重新执行ant eclipse命令。


2 运行Zookeeper
我们首先看下单机版ZooKeeper的启动类org.apache.zookeeper.server.ZooKeeperServerMain,它的启动参数有两种情况:
情况1:直接给出相应的参数设置
有4个参数,前两个参数必填,后两个参数可选,对客户端暴漏出的端口port,dataDir的目录,tickTime值,maxClientCnxns值(最大的客户端连接数)。




下面分别来简单介绍下:
1:对客户端暴漏出的端口port,即如下客户端代码指定的端口:new ZooKeeper("localhost:2181",5000,this)
2:dataDir的目录:
ZooKeeper有两类数据要存储。一种就是事务记录,另一种就是ZooKeeper的内存树中的数据,以快照方式存储。 所以可以给这两种数据指定不同的目录。
dataDir用来指定内存树快照的存储位置,dataLogDir用来指定事务记录的存储位置。只给出了dataDir的目录,则代表两种数据都存储在该目录下。


3:tickTime值,单位ms,默认3000:
用途1:用于指定session检查的间隔,服务器会每隔一段时间检查一次连接它的客户端的session是否过期。该间隔就是tickTime。
用途2:用于给出默认的minSessionTimeout和maxSessionTimeout,如果没有给出maxSessionTimeout和minSessionTimeout(为-1),
则minSessionTimeout和maxSessionTimeout的取值如下:
minSessionTimeout == -1 ? tickTime 2 : minSessionTimeout; maxSessionTimeout == -1 ? tickTime 20 : maxSessionTimeout;
分别是tickTime的2倍和20倍。
客户端代码在创建ZooKeeper对象的时候会给出一个sessionTimeout时间,而上述的minSessionTimeout和maxSessionTimeout就是用来约束客户端的sessionTimeout。
4:maxClientCnxns值,用于指定服务器端最大的连接数。
参数说完了,我们就来设置一下:
 
同时,ZooKeeper采用log4j来作为日志输出,所以需要将log4j的配置文件(在conf文件夹中)放置到类路径下。
情况2:给出配置文件地址
当org.apache.zookeeper.server.ZooKeeperServerMain类的启动参数只有一个时,则代表着配置文件的路径。
也可以修改conf文件夹中的zoo_sample.cfg配置文件,
修改下dataDir指定的路径。然后把该配置文件的路径作为参数:
 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值