web-dev-qa-db-ja.com

Zookeeperクラスターを開始しています。エラー:メインクラスorg.Apache.zookeeper.server.quorum.QuorumPeerMainが見つからなかったか、読み込めませんでした

(私は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 

エラーが発生します:

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 \の部分を削除することで、someの進捗を確認できたので、次のように実行します。

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);
14
Shark

クラスタ化されたセットアップを取得するには、zkServer.shを実行できる必要があります。クラスターエンドポイントを含む、手動で提供するのと同じconf/Zoo.cfgを使用します。

クラスパスに欠けているものをチェックするための最良の方法(および適切なJavaコマンドを参照)は、あなたがうまくいったと言ったzkServer.shを実行することです。

起動したら、次のように実際に使用されているコマンドを確認します。

ps -ef | grep zookeeper
2
igorbel

Error: Could not find or load main class org.Apache.zookeeper.server.quorum.QuorumPeerMain 3.5.5のインストール中に、.bin.tarファイルではなくzookeeper .tarファイルをダウンロードしたため。 bin.tarファイルのダウンロード、解凍、使用により、修正されました。

67
Onnonymous

これは、Apache-zookeeper-X.X.X.tar.gzをダウンロードして使用した場合に発生します。Apache-zookeeper-X.X.X-bin。tar.gzを使用する必要があります。これは確実にこの問題を解決します

12
Antro Francis

この問題は、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がダウンロードされていることを確認してください

4
Gautam

同じエラーが発生しました。 Apache-zookeeper- [version] .tar.gzのREADME.mdファイルをチェックしてエラーを解決しました。

mvn clean install -DskipTests

次に、飼育係を開始します。エラーも解決します。

3
vincent

WindowsでApache Zookeper v3.5.5を実行しようとすると、このエラーも発生します。

エラー:メインクラスorg.Apache.zookeeper.server.quorum.QuorumPeerMainが見つからなかったか、読み込めませんでした

@Onnonymousが言ったように、.tar.gzバージョンの代わりに.bin.tar.gz( here )をダウンロードして問題を終了します。

1
fian