web-dev-qa-db-fra.com

Démarrage du cluster Zookeeper. Erreur: impossible de trouver ou de charger la classe principale org.Apache.zookeeper.server.quorum.QuorumPeerMain

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

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
2
igorbel

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.

67
Onnonymous

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

12
Antro Francis

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

4
Gautam

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.

3
vincent

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.

1
fian