Apache zookeeper 动物园管理员多恩';s由于java.lang.ClassNotFoundException:org.apache.zookeeper.server.quorum.QuorumPeerMain而启动

Apache zookeeper 动物园管理员多恩';s由于java.lang.ClassNotFoundException:org.apache.zookeeper.server.quorum.QuorumPeerMain而启动,apache-zookeeper,Apache Zookeeper,我已经搜索了这个论坛,没有找到我的案例的有效答案: 我安装了Java1.8 我从下载了zookeeper-3.5.5的二进制版本 我将zoo_sample.cfg更改为zoo.cfg,没有对cfg进行任何更改 我尝试以root用户身份启动zookeeper: [root@pocdnr1n1apache-zookeeper-3.5.5-bin]#bin/zkServer.sh start conf/zoo.cfg 我在日志中收到错误: Could not find the main class:

我已经搜索了这个论坛,没有找到我的案例的有效答案:

  • 我安装了Java1.8
  • 我从下载了zookeeper-3.5.5的二进制版本

  • 我将zoo_sample.cfg更改为zoo.cfg,没有对cfg进行任何更改

  • 我尝试以root用户身份启动zookeeper:

    [root@pocdnr1n1apache-zookeeper-3.5.5-bin]#bin/zkServer.sh start conf/zoo.cfg

  • 我在日志中收到错误:

    Could not find the main class: org.apache.zookeeper.server.quorum.QuorumPeerMain.  Program will exit.
    

    谢谢。

    我想我已经找到了根本原因,把它贴在这里供未来读者阅读:

    罪魁祸首是Java

    我在节点上有一个旧的java版本,这可以通过运行
    java-version

    在我的例子中,java是1.6,我所做的是重置环境,将新的java 1.8添加到其中:

    # export JAVA_HOME=/opt/jdk1.8.0_151
    # export JRE_HOME=/opt/jdk1.8.0_151/jre/
    # export PATH=$PATH:/opt/jdk1.8.0_151/bin:/opt/jdk1.8.0_151/jre/bin
    
    您应该将路径添加到.bash_配置文件中,使其成为永久路径

    在运行
    source.bash\u profile
    之后,现在已经将Java1.8设置为默认java。同样,您可以通过运行
    java-version

    再次运行zookeeper,它将按预期启动

    这里常见的遗漏是:

  • 下载了非二进制zookeeper
  • java太低(1.6不起作用,建议使用1.8)
  • 应设置环境以确保选择Java1.8作为默认版本
  • 我希望这有帮助

    如果你看一下3.5.5,它会说:

    ZooKeeper在Java 1.7或更高版本中运行(JDK 7或更高版本,FreeBSD支持需要openjdk7)

    这肯定了你的发现。您的Java版本太低