【问题标题】:zookeeper doen's get started due to java.lang.ClassNotFoundException: org.apache.zookeeper.server.quorum.QuorumPeerMain由于 java.lang.ClassNotFoundException: org.apache.zookeeper.server.quorum.QuorumPeerMain,zookeeper 启动了
【发布时间】:2019-09-25 23:16:18
【问题描述】:

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

  1. 我安装了java 1.8
  2. 我从https://www.apache.org/dist/zookeeper/zookeeper-3.5.5/apache-zookeeper-3.5.5-bin.tar.gz下载了zookeeper-3.5.5的二进制版本

  3. 我将 zoo_sample.cfg 更改为 zoo.cfg,未对 cfg 进行任何更改

  4. 我尝试以 root 身份启动 zookeeper:

    [root@pocdnr1n1 apache-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.

谢谢。

【问题讨论】:

    标签: apache-zookeeper


    【解决方案1】:

    我想我找到了根本原因,在这里发布给未来的读者:

    罪魁祸首是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
    

    您应该将 PATH 添加到 .bash_profile 中,使其成为永久性的。

    现在您运行source .bash_profile,现在您已将java 1.8 设置为默认java。再次,您可以通过运行java -version 来确认这一点

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

    这里常见的缺失是:

    1. 下载了非二进制 zookeeper
    2. java太低(1.6不行,推荐1.8)
    3. 应设置环境以确保选择 java 1.8 作为默认版本

    我希望这会有所帮助。

    【讨论】:

      【解决方案2】:

      如果您查看 3.5.5 的 ZooKeeper Administrator's Guide - Required Software,它会说:

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

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

      【讨论】:

        猜你喜欢
        • 2015-04-13
        • 2019-08-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-11-29
        • 2020-04-15
        • 2015-09-15
        • 2014-12-18
        相关资源
        最近更新 更多