我在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
答案 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文件依赖于版本,然后将它包含在你的程序中并运行它谢谢你