1

我正在尝试使用 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,所有测试都可以正常工作,没有错误,而且我正在为我的项目(创建 lucene 索引器)使用 Eclipse Indigo(Maven 内置功能)。

有任何想法吗?

4

3 回答 3

2

如果我没有正确理解您的问题,我深表歉意。

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

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

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

于 2012-08-01T19:08:28.450 回答
2

您正在运行一些 Mahout 类,而没有 Mahout 在您的类路径中依赖的第三方类。这是 slf4j 日志记录外观。您可以将此项目中的 JAR 添加到您的类路径中。或者您可以确保您运行的脚本为您设置。或者,您可以使用 Mahout 与 Maven 构建的“.job”文件,该文件生成一个 JAR 文件,其中包含所有依赖项打包。

于 2012-08-01T19:12:37.763 回答
0

原来我的问题是使用 jdk 7 和 mahout 0.4。我将其更改为 jdk 6,之后一切正常。

于 2012-08-10T00:48:34.030 回答