开始动物园管理员集群。错误:无法找到或加载主类org.apache.zookeeper.server.quorum.QuorumPeerMain [英] Starting Zookeeper Cluster. Error: Could not find or load main class org.apache.zookeeper.server.quorum.QuorumPeerMain

查看:13344
本文介绍了开始动物园管理员集群。错误:无法找到或加载主类org.apache.zookeeper.server.quorum.QuorumPeerMain的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

(我在CentOS 5.8上运行)。我一直在下面的群集(多服务器)动物园管理员建立的方向,但得到一个错误,当我尝试启动我的服务器。当我运行命令的文档中描述:

  java命令饲养员-3.4.6.jar:LIB /的log4j-1.2.16.jar:CONF \\ org.apache.zookeeper.server.quorum.QuorumPeerMain的conf /动物园。 CFG

我得到的错误:

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

我有我的文件位置这样和我从运行〜/动物园管理员-3.4.6目录:

 〜/饲养员-3.4.6 /饲养员-3.4.6.jar
〜/动物园管理员-3.4.6 / conf目录/ zoo.cfg
〜/动物园管理员-3.4.6 /数据/身份识别码
〜/动物园管理员-3.4.6 / lib中/的log4j-1.2.16.jar
〜/动物园管理员-3.4.6 /斌/ zkServer.sh

有谁知道为什么这个错误是怎么回事?我不明白正在传递的参数,所以我很难调试路径问题。作为一个方面说明,我试着运行 ./饲养员-3.4.6 /斌/ zkServer.sh启动,这并成功运行,但文档似乎表明,命令是为一个单节点实例。

修改

我能够做出的部分的修改命令并取出进展:CONF \\ 的一部分,所以现在我正在运行:

  java命令饲养员-3.4.6.jar:LIB /的log4j-1.2.16.jar:org.apache.zookeeper.server.quorum.QuorumPeerMain的conf / zoo.cfg

我得到一个新的错误,但是这是进步......

线程mainjava.lang.NoClassDefFoundError的例外:组织/ SLF4J / LoggerFacto
RY
        在org.apache.zookeeper.server.quorum.QuorumPeerMain< clinit>(QuorumPeer
Main.java:64)
抛出java.lang.ClassNotFoundException:引起org.slf4j.LoggerFactory
        在java.net.URLClassLoader的$ 1.run(URLClassLoader.java:366)
        在java.net.URLClassLoader的$ 1.run(URLClassLoader.java:355)
        在java.security.AccessController.doPrivileged(本机方法)
        在java.net.URLClassLoader.findClass(URLClassLoader.java:354)
        在java.lang.ClassLoader.loadClass(ClassLoader.java:425)
        在sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:308)
        在java.lang.ClassLoader.loadClass(ClassLoader.java:358)
        ... 1更多

其对应于线63和从QuorumPeerMain 64

 公共类QuorumPeerMain {
    私有静态最后记录仪LOG = LoggerFactory.getLogger(QuorumPeerMain.class);


解决方案

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

来检查你从你的classpath缺少什么(见适当的java命令)最好的方法是运行你说你工作的zkServer.sh。

当它启动时,检查用这样的实际命令:

  PS -ef | grep的动物园管理员

(I'm running on CentOS 5.8). I've been following the direction for a Clustered (Multiserver) Zookeeper Set-up, but getting an error when I try to start up my server. When I run the command as described in the documentation:

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

I get the error:

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

I have my files location as such and am running from the ~/zookeeper-3.4.6 directory:

~/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

Does anyone know why this error is happening? I don't quite understand the arguments that are being passed, so it is hard for me to debug the path issue. As a side note, I've tried running ./zookeeper-3.4.6/bin/zkServer.sh start, which did successfully work, but the documentation seems to indicate that command is meant for a single-node instance.

Edit:

I was able to make some progress by modifying the command and taking out the :conf \ part, so now I'm running:

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

I get a new error, but this is progress...

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

which corresponds to lines 63 and 64 from QuorumPeerMain

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

解决方案

You should be able to run zkServer.sh to get a clustered setup. It will use the same conf/zoo.cfg that you are providing manually, which will contain the cluster endpoints.

The best way to check what you are missing from your classpath (and see the proper java command) is to run the zkServer.sh you said worked for you.

When it starts up, check the actual command used like this:

ps -ef | grep zookeeper

这篇关于开始动物园管理员集群。错误:无法找到或加载主类org.apache.zookeeper.server.quorum.QuorumPeerMain的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆