(私は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);
クラスタ化されたセットアップを取得するには、zkServer.shを実行できる必要があります。クラスターエンドポイントを含む、手動で提供するのと同じconf/Zoo.cfgを使用します。
クラスパスに欠けているものをチェックするための最良の方法(および適切なJavaコマンドを参照)は、あなたがうまくいったと言ったzkServer.shを実行することです。
起動したら、次のように実際に使用されているコマンドを確認します。
ps -ef | grep zookeeper
Error: Could not find or load main class org.Apache.zookeeper.server.quorum.QuorumPeerMain
3.5.5のインストール中に、.bin.tarファイルではなくzookeeper .tarファイルをダウンロードしたため。 bin.tarファイルのダウンロード、解凍、使用により、修正されました。
これは、Apache-zookeeper-X.X.X.tar.gzをダウンロードして使用した場合に発生します。Apache-zookeeper-X.X.X-bin。tar.gzを使用する必要があります。これは確実にこの問題を解決します
この問題は、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がダウンロードされていることを確認してください
同じエラーが発生しました。 Apache-zookeeper- [version] .tar.gzのREADME.mdファイルをチェックしてエラーを解決しました。
mvn clean install -DskipTests
次に、飼育係を開始します。エラーも解決します。
WindowsでApache Zookeper v3.5.5を実行しようとすると、このエラーも発生します。
エラー:メインクラスorg.Apache.zookeeper.server.quorum.QuorumPeerMainが見つからなかったか、読み込めませんでした
@Onnonymousが言ったように、.tar.gzバージョンの代わりに.bin.tar.gz( here )をダウンロードして問題を終了します。