由于java.lang.NoClassDefFoundError:org / slf4j / LoggerFactory错误,无法运行./bin/mahout

时间:2012-08-01 17:40:14

标签: eclipse maven slf4j mahout

我正在尝试使用Mahout并使用lucene索引器从文本创建向量:https://cwiki.apache.org/confluence/display/MAHOUT/Creating+Vectors+from+Text

但是当我从cygwin的MAHOUT_HOME目录运行命令./bin/mahout时出现此错误:

java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
        at org.apache.mahout.driver.MahoutDriver.<clinit>(MahoutDriver.java:89)
Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory
        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:423)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
        ... 1 more
Exception in thread "main"

我知道这是slf4j的依赖问题,但我不知道应该如何解决它。

我已经使用“mvn install”成功构建了mahout,并且所有测试都正常运行,没有错误,我也在使用Eclipse Indigo(Maven内置功能)来创建项目(创建lucene索引器)。

有什么想法吗?

3 个答案:

答案 0 :(得分:2)

如果我没有正确理解你的问题,我道歉。

也许这个问题可以通过将以下依赖项添加到您尝试使用MAHOUT的项目的pom.xml来解决:

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.6.6</version>
</dependency>

如果您需要特定版本的sl4j,请通过this搜索检查maven中央存储库。

答案 1 :(得分:2)

你正在运行一些没有Mahout在你的类路径中依赖的第三方类的Mahout类。这是slf4j伐木门面。您可以将此项目中的JAR添加到类路径中。或者,您可以确保您运行的脚本为您设置了该脚本。或者您可以使用Mahout与Maven构建的“.job”文件,该文件将打包所有依赖项的JAR文件。

答案 2 :(得分:0)

原来我的问题是使用jhk 7和mahout 0.4。我把它改成了jdk 6,之后一切都很完美。