When I try to compile my program in Hadoop with this command
bin/hadoop com.sun.tools.javac.Main WordCounter.java
The error means you don't use a JDK to start Hadoop. The main difference between the JRE (pure runtime) and the JDK is the Java compiler javac
. To see if you have a Java compiler, you need to check two places: There should be a javac
in the $JAVA_HOME/bin
folder plus there must be a file $JAVA_HOME/lib/tools.jar
.
In your case, the first one (the binary to start the compiler) can be missing but you absolutely need the tools.jar
.
You say that you have a tools.pack
but I haven't heard about this one before. Use your package manager to search for openjdk
and then look for a package in the result list which says jdk
. On my system, that would be openjdk-7-jdk
. Install this package and the error should go away.
I had to downgrade Hadoop to 2.9.2 and it's working.
I also had these in my environment:
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
Try to set HADOOP_CLASSPATH environment variable
export HADOOP_CLASSPATH=$JAVA_HOME/lib/tools.jar