无法找到或加载主类com.sun.tools.javac.Main hadoop mapreduce
我正在努力学习MapReduce,但我现在有点迷失了。
http://hadoop.apache.org/docs/r2.6.0/hadoop-mapreduce-client/hadoop-mapreduce-client-core/MapReduceTutorial.html#Usage
特别是这套说明:
Compile WordCount.java and create a jar: $ bin/hadoop com.sun.tools.javac.Main WordCount.java
当我在终端输入hadoop
,我能够看到提供参数的“帮助”,所以我相信我已经安装了hadoop。
当我输入命令时:
编译WordCount.java并创建一个jar:
hadoop com.sun.tools.javac.Main WordCount.java
我收到错误:
Error: Could not find or load main class com.sun.tools.javac.Main
我知道我已经安装了Java并在我的计算机上工作,因为我之前使用它来创建其他程序。
此命令输出:
$ /usr/libexec/java_home /Library/Java/JavaVirtualMachines/jdk1.7.0_55.jdk/Contents/Home
也许我错过了一套Java工具? 不确定
我得到了同样的错误。
我通过添加HADOOP_CLASSPATH环境参数解决了它:
export HADOOP_CLASSPATH=/usr/lib/jvm/java-7-openjdk-amd64/lib/tools.jar
请确保您安装了OpenJDK7。 我使用的是Ubuntu 14.04:
sudo apt-get install openjdk-7-jdk
您可能无法安装jdk。 检查java文件夹中的/lib/tools.jar。
如果没有, #sudo apt-get install default-jdk ,错误消失。
bin/hadoop com.sun.tools.javac.Main WordCount.java
最终以java com.sun.tools.javac.Main WordCount.java
运行。
如果你的classpath / javahome是正确的,那么尝试输入java ...
你自己,并使用TAB键检查名称com.sun.tools...
也许名字不合适。 (鸡蛋。你使用的是Oracle而不是SUN)
另一个建议是修改$HADOOP_HOME/etc/hadoop/hadoop-env.sh
。 将tools.jar
添加到HADOOP_CLASSPATH
。