所以我是Hadoop和MapReduce的新手,我正在尝试创建一个简单的WordCount程序。然而,当它运行时,我遇到了一个错误:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/collections/map/UnmodifiableMap
at org.apache.hadoop.conf.Configuration$DeprecationContext.<init>(Configuration.java:409)
at org.apache.hadoop.conf.Configuration.<clinit>(Configuration.java:448)
at com.Cameron.WordCount.main(WordCount.java:51)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.collections.map.UnmodifiableMap
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
... 3 more
我已经在网上浏览了一下,原因似乎是Commons Collection JAR并没有包含在构建路径中,尽管有我的,但我还是得到了错误。我已经尝试清理项目并重新启动Eclipse无济于事,所以任何帮助都将非常感激。我的构建路径配置如下:
commons-collections4-4.1.jar
commons-lang-2.6.jar
commons-logging-1.2.jar
guava-11.0.2.jar
hadoop-common-2.7.2.jar
hadoop-mapreduce-client-core-2.7.2.jar
JRE System Library [JavaSE-1.7]
答案 0 :(得分:4)
我遇到了类似的错误。我正在使用luna eclipse(https://github.com/hortonworks/hadoop-tutorials/blob/master/Community/T09_Write_And_Run_Your_Own_MapReduce_Java_Program_Poll_Result_Analysis.md)运行cloudera 5.8的教程。
你需要Apache Commons Collections»3.2.1(不是4.1),将它添加到你的构建路径中它应该运行。