Hadoop "Could not find or load main class com.sun.tools.javac.Main"

Hadoop "Could not find or load main class com.sun.tools.javac.Main"

在我的问题作为重复问题被关闭之前:我查看了所有其他相关问题,但提供的解决方案对我不起作用,可能是因为我使用的是 Cygwin,而不是 Unix。

我正在试用教程 here。每当我 运行 命令(在 c:/hadoop 中)bin/hadoop com.sun.tools.javac.Main WordCount.java 时,我都会收到错误 Could not find or load main class com.sun.tools.javac.Main.

我的 Java_Home 变量设置为:c:/PROGRA~1/Java/jdk1.7.0_17echo $JAVA_HOME 证实了这一点),我的 HADOOP_CLASSPATH 设置为 c:/PROGRA~1/Java/jdk1.7.0_17/lib/tools.jar

javac -version 确认我正在使用 jdk1.7.0_17.

有人知道可能是什么问题吗?

Windows 和 Unix/Linux 工具之间的差异之一是 PATHCLASSPATH 变量的处理,其中 Windows 支持C:\...路径表示法,PATHCLASSPATH中的分隔符是分号;,Linux上,其中文件路径中的:非常很少见,分隔符是:.

由于您在 cygwin 上 运行,因此您使用的是 Unix/Linux 版本的 Hadoop(可能还有 Java)。这意味着它可能期望 CLASSPATH 以冒号 (:) 分隔。

所以你应该使用你给出的路径的 "Unix" 版本,在 cygwin 中可以通过将 c: 替换为 /cygdrive/c.