(Je cours sur CentOS 5.8). J'ai suivi la direction pour Clustered (Multiserver) Zookeeper Set-up , mais j'ai reçu une erreur lorsque j'essaie de démarrer mon serveur. Lorsque j'exécute la commande comme décrit dans la documentation:
Java -cp zookeeper-3.4.6.jar:lib/log4j-1.2.16.jar:conf \ org.Apache.zookeeper.server.quorum.QuorumPeerMain conf/Zoo.cfg
Je reçois l'erreur:
Error: Could not find or load main class org.Apache.zookeeper.server.quorum.QuorumPeerMain
J'ai mon emplacement de fichiers en tant que tel et je suis en cours d'exécution à partir du répertoire ~/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
Quelqu'un sait-il pourquoi cette erreur se produit? Je ne comprends pas très bien les arguments qui sont passés, il est donc difficile pour moi de déboguer le problème de chemin d'accès. En remarque, j'ai essayé d'exécuter ./zookeeper-3.4.6/bin/zkServer.sh start
, qui a fonctionné avec succès, mais la documentation semble indiquer que la commande est destinée à une instance à nœud unique.
Modifier :
J'ai pu faire progresser certains en modifiant la commande et en supprimant le :conf \
partie, alors maintenant je cours:
Java -cp zookeeper-3.4.6.jar:lib/log4j-1.2.16.jar: org.Apache.zookeeper.server.quorum.QuorumPeerMain conf/Zoo.cfg
Je reçois une nouvelle erreur, mais c'est un progrès ...
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
qui correspond aux lignes 63 et 64 de QuorumPeerMain
public class QuorumPeerMain {
private static final Logger LOG = LoggerFactory.getLogger(QuorumPeerMain.class);
Vous devriez pouvoir exécuter zkServer.sh pour obtenir une configuration en cluster. Il utilisera le même conf/Zoo.cfg que vous fournissez manuellement, qui contiendra les points de terminaison du cluster.
La meilleure façon de vérifier ce qui manque dans votre chemin de classe (et de voir la bonne commande Java) est d'exécuter le zkServer.sh dont vous avez dit qu'il fonctionnait pour vous.
Au démarrage, vérifiez la commande réelle utilisée comme ceci:
ps -ef | grep zookeeper
J'ai eu le Error: Could not find or load main class org.Apache.zookeeper.server.quorum.QuorumPeerMain
lors de l'installation de la version 3.5.5, car j'avais téléchargé le fichier zookeeper .tar et non le fichier .bin.tar. Le téléchargement, le décompactage et l'utilisation du fichier bin.tar l'ont corrigé pour moi.
Cela se produit lorsque vous téléchargez et utilisez Apache-zookeeper-X.X.X.tar.gz, vous devez utiliser Apache-zookeeper-X.X.X -bin. Tar.gz. cela résoudra sûrement ce problème
Le problème peut être résolu en décompactant Apache-zookeeper-3.5.6-bin.tar.gz. Initialement, j'ai rencontré la même erreur lors de la suppression/installation d'Apache-zookeeper-3.5.6.tar.gz et de l'exécution de /bin/zkServer.sh start
Veuillez vous assurer que vous avez téléchargé Apache-zookeeper-3.5.6-bin.tar.gz
J'ai les mêmes erreurs. J'ai résolu l'erreur en vérifiant le fichier README.md dans Apache-zookeeper- [version] .tar.gz Tapez simplement:
mvn clean install -DskipTests
puis démarrez le gardien de zoo. Vous pourrez également résoudre l'erreur.
J'obtiens également cette erreur lorsque j'essaie d'exécuter Apache Zookeper v3.5.5 sous Windows:
Erreur: impossible de trouver ou de charger la classe principale org.Apache.zookeeper.server.quorum.QuorumPeerMain
Comme l'a dit @Onnonymous, je termine mon problème en téléchargeant le .bin.tar.gz ( ici ) au lieu de la version .tar.gz.