Lorsque j'essaie de compiler mon programme dans Hadoop avec cette commande
bin/hadoop com.Sun.tools.javac.Main WordCounter.Java
du dossier Hadoop, il est dit
Error: Could not find or load main class com.Sun.tools.javac.Main
J'ai regardé dans des discussions similaires où des personnes ont suggéré de vérifier si Java_HOME
est correctement énoncé. Donc, dans etc/hadoop/hadoop-env.sh
J'ai ajouté cette ligne
export Java_HOME=/usr/lib/jvm/Java-7-openjdk-AMD64
puis vérifié si tools.pack
est correctement décompressé dans /usr/lib/jvm/Java-7-openjdk-AMD64/lib
et c’est le cas. Puis j'ai essayé javac -version
qui a donné
javac 1.7.0_65
J'ai essayé de réinstaller Java mais cela n'a pas résolu le problème.
Essayez de définir HADOOP_CLASSPATH variable d’environnement
export HADOOP_CLASSPATH=$Java_HOME/lib/tools.jar
J'ai dû rétrograder Hadoop à la version 2.9.2 et cela fonctionne.
J'ai aussi eu ceux-ci dans mon environnement:
export Java_HOME=/usr/lib/jvm/Java-1.8.0-openjdk
export PATH=${Java_HOME}/bin:${PATH}
export HADOOP_CLASSPATH=${Java_HOME}/lib/tools.jar
L'erreur signifie que vous n'utilisez pas de JDK pour démarrer Hadoop. La principale différence entre JRE (runtime pur) et JDK réside dans le compilateur Java javac
. Pour voir si vous avez un compilateur Java, vous devez vérifier deux emplacements: Il devrait y avoir une javac
dans le dossier $Java_HOME/bin
plus un fichier $Java_HOME/lib/tools.jar
.
Dans votre cas, le premier (le binaire pour démarrer le compilateur) peut être manquant mais vous avez absolument besoin du tools.jar
.
Vous dites que vous avez un tools.pack
mais je n'en avais jamais entendu parler auparavant. Utilisez votre gestionnaire de paquets pour rechercher openjdk
, puis recherchez un paquet dans la liste des résultats qui indique jdk
. Sur mon système, ce serait openjdk-7-jdk
. Installez ce paquet et l'erreur devrait disparaître.