-1

我在 Eclipse 中使用 Hadoop-1.0.1。我正在尝试运行wordcount应用程序,但是当我运行 WordCount.java 时,Eclipse 显示以下错误

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
    at org.apache.hadoop.conf.Configuration.<clinit>(Configuration.java:143)
    at test.WordCount.main(WordCount.java:56)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory
    at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
    ... 2 more

我的classpath. 如果应用程序需要更多 jar

4

3 回答 3

5

您似乎收到此错误,因为与常见日志记录相关的两个重要日志记录类 commons-logging-1.1.1.jar 和 commons-logging-api-1.0.4.jar 要么无法从您的类路径中获得,要么您只是没有。

在大多数情况下,这些文件与其他 Hadoop Jar 位于 \lib 文件夹中,因此当您设置类路径时,可以访问这些 jar。请确认您的机器中确实有这些文件,并且在您的类路径中进行了设置,以便可以访问它们。

此外,当您运行“hadoop 版本”时,结果会出现版本,相同的 hadoop-core--SNAPSHOT.jar 必须位于您的 $HADOOP_HOME 位置。

您提到您正在运行WordCount.java,而应该说您正在运行 WordCount 作业,因为您始终将编译后的应用程序用作 jar 而不是 java。

$ bin/hadoop jar /usr/jboss/wordcount.jar org.myhadoop.WordCount /usr/jboss/wordcount/input /usr/jboss/wordcount/output

于 2012-05-17T22:42:36.540 回答
1

hadoop-core-1.0.1可能不在您的类路径中:commons-logging实际上在 hadoop jar 中多次包含!

于 2012-05-17T14:42:56.967 回答
1

看来你没有包含 common-logging jar 文件所以在这里下载jar 文件取决于版本,然后将它包含在你的程序中并运行它谢谢你

于 2013-11-22T05:08:41.410 回答