Hadoop-1.0.1中的java.lang.NoClassDefFoundError

时间:2012-05-17 14:38:24

标签: java hadoop

我在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中有hadoop-core-1.0.1.jar。应用程序是否需要更多jar

3 个答案:

答案 0 :(得分:5)

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

在大多数情况下,这些文件与其他Hadoop Jar一起位于\ lib文件夹中,因此当您设置类路径时,可以访问这些jar。请验证您的计算机中是否包含这些文件,并将其设置在类路径中以便可以访问它们。

此外,当您运行“hadoop version”时,版本会出现,同样的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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

似乎你没有包含common-logging jar文件所以Download Here jar文件依赖于版本,然后将它包含在你的程序中并运行它谢谢你