启动Zookeeper群集。错误:无法找到或加载主类org.apache.zookeeper.server.quorum.QuorumPeerMain

时间:2015-02-12 17:51:48

标签: apache cluster-computing apache-zookeeper

(我在CentOS 5.8上运行)。我一直在关注Clustered (Multiserver) Zookeeper Set-up的方向,但在尝试启动服务器时收到错误。当我按照文档中描述的那样运行命令时:

java -cp zookeeper-3.4.6.jar:lib/log4j-1.2.16.jar:conf \ org.apache.zookeeper.server.quorum.QuorumPeerMain conf/zoo.cfg 

我收到错误:

Error: Could not find or load main class  org.apache.zookeeper.server.quorum.QuorumPeerMain

我的文件位置是这样的,我从〜/ zookeeper-3.4.6目录运行:

~/zookeeper-3.4.6/zookeeper-3.4.6.jar 
~/zookeeper-3.4.6/conf/zoo.cfg
~/zookeeper-3.4.6/data/myid
~/zookeeper-3.4.6/lib/log4j-1.2.16.jar
~/zookeeper-3.4.6/bin/zkServer.sh

有谁知道为什么会发生这种错误?我不太了解正在传递的参数,因此我很难调试路径问题。作为旁注,我尝试运行./zookeeper-3.4.6/bin/zkServer.sh start,它确实成功运行,但文档似乎表明命令是针对单节点实例的。

修改

我能够通过修改命令并取出:conf \部分来实现一些进展,所以现在我正在运行:

java -cp zookeeper-3.4.6.jar:lib/log4j-1.2.16.jar: org.apache.zookeeper.server.quorum.QuorumPeerMain conf/zoo.cfg

我收到了一个新错误,但这是进展......

Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/LoggerFacto
ry
        at org.apache.zookeeper.server.quorum.QuorumPeerMain.<clinit>(QuorumPeer
Main.java:64)
Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory
        at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
        ... 1 more

,对应QuorumPeerMain的第63和64行

public class QuorumPeerMain {
    private static final Logger LOG = LoggerFactory.getLogger(QuorumPeerMain.class);

6 个答案:

答案 0 :(得分:11)

可以通过解压缩apache-zookeeper-3.5.6-bin.tar.gz来解决此问题。最初,我在解压缩/安装apache-zookeeper-3.5.6.tar.gz并执行/bin/zkServer.sh start时遇到了相同的错误

请确保您已下载apache-zookeeper-3.5.6-bin.tar.gz

答案 1 :(得分:10)

在安装3.5.5时,我得到了Error: Could not find or load main class org.apache.zookeeper.server.quorum.QuorumPeerMain,因为我下载了zookeeper .tar文件而不是.bin.tar文件。下载,解压缩并使用bin文件为我修复了该问题。

答案 2 :(得分:4)

当您下载并使用apache-zookeeper-X.X.X.tar.gz时,会发生这种情况,您应该使用apache-zookeeper-X.X.X- bin .tar.gz。这肯定会解决这个问题

答案 3 :(得分:2)

我遇到了同样的错误。我通过检查apache-zookeeper- [version] .tar.gz中的README.md文件解决了该错误。只需键入:

mvn clean install -DskipTests

然后启动Zookeeper。您也将解决错误。

答案 4 :(得分:1)

您应该能够运行zkServer.sh来获得群集设置。它将使用您手动提供的相同conf / zoo.cfg,它将包含集群端点。

检查类路径中缺少的内容(并查看正确的java命令)的最佳方法是运行您说过为您工作的zkServer.sh。

启动时,请检查使用的实际命令:

ps -ef | grep zookeeper

答案 5 :(得分:0)

当尝试在Windows上运行Apache Zookeper v3.5.5时,我也收到此错误:

  

错误:找不到或加载主类org.apache.zookeeper.server.quorum.QuorumPeerMain

如@Onnonymous所说,我通过下载.bin.tar.gz(here)而不是.tar.gz版本来解决问题。