我正在尝试使用Hadoop MapReduce使用以下命令编译简单的WordCount.java程序:hadoop com.sun.tools.javac.Main WordCount.java
但我不断收到消息:
错误:无法找到或加载主类com.sun.tools.javac.Main
我的出口如下:
export JAVA_HOME=/Library/Java/JavaVirtualMachine/jdk1.8.0_101.jdk/Contents/Home
export HADOOP_HOME=/usr/local/Cellar/hadoop/2.7.1
export HADOOP_PREFIX=$HADOOP_HOME/libexec
export HADOOP_MAPRED_HOME=$HADOOP_PREFIX
export HADOOP_COMMON_HOME=$HADOOP_PREFIX
export HADOOP_HDFS_HOME=$HADOOP_PREFIX
export YARN_HOME=$HADOOP_PREFIX
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_PREFIX
export HADOOP_CLASSPATH=$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
我检查了我的JAVA_HOME / lib目录并确认tools.jar文件在那里。
我的其他haddop功能似乎正常工作。我可以运行hadoop version
并返回我的hadoop版本号。我可以运行hdfs dfs -ls
并返回我的hdfs目录列表。
任何帮助,找出我无法编译的原因将非常感谢
答案 0 :(得分:1)
您的错误可能是JAVA_HOME
环境变量未正确设置。
要解决此问题,我使用this answer正确设置变量。
Set HADOOP_CLASSPATH environment variable
export HADOOP_CLASSPATH=$JAVA_HOME/lib/tools.jar
之后,错误消失了。