无法找到或加载主类com.sun.tools.javac.Main hadoop mapreduce

时间:2015-03-25 16:13:15

标签: java hadoop mapreduce hadoop2

我正在尝试学习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时,我能够看到"帮助" make提供了参数,所以我相信我已经安装了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工具?不确定

3 个答案:

答案 0 :(得分:18)

我得到了同样的错误。

我通过添加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

答案 1 :(得分:3)

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

答案 2 :(得分:2)

您可能无法安装jdk。检查java文件夹中的/lib/tools.jar。
如果没有, #sudo apt-get install default-jdk ,错误消失。