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

Sha*_*ark 8 apache cluster-computing apache-zookeeper

(我在CentOS 5.8上运行)。我一直在遵循群集(多服务器)Zookeeper设置的指导,但是在尝试启动服务器时遇到错误。当我按照文档中的描述运行命令时:

java -cp zookeeper-3.4.6.jar:lib/log4j-1.2.16.jar:conf \ org.apache.zookeeper.server.quorum.QuorumPeerMain conf/zoo.cfg 
Run Code Online (Sandbox Code Playgroud)

我得到错误:

Error: Could not find or load main class  org.apache.zookeeper.server.quorum.QuorumPeerMain
Run Code Online (Sandbox Code Playgroud)

我有这样的文件位置,并且正在〜/ 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
Run Code Online (Sandbox Code Playgroud)

有谁知道为什么会发生此错误?我不太了解要传递的参数,因此很难调试路径问题。附带说明一下,我尝试运行./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
Run Code Online (Sandbox Code Playgroud)

我收到一个新错误,但这是进度。

java -cp zookeeper-3.4.6.jar:lib/log4j-1.2.16.jar:conf \ org.apache.zookeeper.server.quorum.QuorumPeerMain conf/zoo.cfg 
Run Code Online (Sandbox Code Playgroud)

对应于QuorumPeerMain的第63和64行

public class QuorumPeerMain {
    private static final Logger LOG = LoggerFactory.getLogger(QuorumPeerMain.class);
Run Code Online (Sandbox Code Playgroud)

Onn*_*ous 43

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

  • 这个答案应该被接受! (2认同)

小智 31

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

  • 这2个文件有什么区别?bin.tar.gz 和 tar.gz?我看到一个是 8Mb,另一个是 3 Mb (3认同)

小智 13

这个问题可以通过解压 apache-zookeeper-3.5.6-bin.tar.gz 来解决。最初,我在 untared/installed apache-zookeeper-3.5.6.tar.gz 并执行 /bin/zkServer.sh start 时遇到了同样的错误

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

  • 请不要在您的帖子中添加签名或礼貌文字。前者可以被视为垃圾邮件,从而导致删除,后者是听起来很专业的问答网站中不必要的噪音。 (6认同)

vin*_*ent 7

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

mvn clean install -DskipTests
Run Code Online (Sandbox Code Playgroud)

然后启动zookeeper。你也会解决这个错误。

  • 这是最好的答案。切换到“...bin.tar.gz”发行版并不是每个人的正确选择,许多其他答案都认为这一点。(这些答案类似于对有人问“我的车出了什么问题?”说“你应该乘坐出租车”) (2认同)

igo*_*bel 3

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

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

当它启动时,检查实际使用的命令,如下所示:

ps -ef | grep zookeeper
Run Code Online (Sandbox Code Playgroud)