java.lang.ClassNotFoundException:org.apache.hadoop.util.ProgramDriver

时间:2012-10-25 17:53:36

标签: hadoop mahout

我正在尝试在我的本地系统上运行mahout,当我运行“./bin/mahout”时,我得到了下面提到的错误。我想要做的就是在没有hadoop的情况下运行mahout并尝试20Newsgroup示例。

我在核心,分发和示例目录中执行了“mvn compile”和“mvn install -Dmaven.test.skip = true”。不知道我还缺少什么。我知道你可以在没有Hadoop运行的情况下运行mahout。

感谢有人可以提供帮助。

hadoop binary is not in PATH,HADOOP_HOME/bin,HADOOP_PREFIX/bin, running locally
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/Users/Aanchal/mahout-distribution-0.7/mahout-examples-0.7-job.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/Users/Aanchal/mahout-distribution-0.7/lib/slf4j-jcl-1.6.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/Users/Aanchal/mahout-distribution-0.7/lib/slf4j-log4j12-1.6.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/util/ProgramDriver
    at org.apache.mahout.driver.MahoutDriver.main(MahoutDriver.java:96)
Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.util.ProgramDriver
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)

2 个答案:

答案 0 :(得分:6)

添加此行

CLASSPATH=${CLASSPATH}:$MAHOUT_HOME/lib/hadoop/hadoop-core-0.20.204.0.jar;

到mahout.sh/bat文件中的部分结尾

# add release dependencies to CLASSPATH
for f in $MAHOUT_HOME/lib/*.jar; do 
  CLASSPATH=${CLASSPATH}:$f; 
done

答案 1 :(得分:0)

此异常表示在类路径中找不到类,即我们正在尝试加载类定义,类路径中不存在包含该类的类/ jar。

请检查您的PATH和HADOOP_HOME配置并相应地更新这些变量。