0

我正在阅读 Mahout in Action 并完成第 2 章中的第一个示例

$ javac RecommenderIntro.java 
RecommenderIntro.java:2: error: package org.apache.mahout.cf.taste.impl.model.file does not exist
import org.apache.mahout.cf.taste.impl.model.file.*;
^
RecommenderIntro.java:3: error: package org.apache.mahout.cf.taste.impl.neighborhood does not exist
import org.apache.mahout.cf.taste.impl.neighborhood.*;
^
RecommenderIntro.java:4: error: package org.apache.mahout.cf.taste.impl.recommender does not exist
import org.apache.mahout.cf.taste.impl.recommender.*;

我通过 yum 安装了 Mahout:

$ sudo yum install mahout
...
Downloading Packages:
mahout-0.7+12-1.cdh4.2.0.p0.9.el6.noarch.rpm                      |  94 MB     05:17     
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Updating   : mahout-0.7+12-1.cdh4.2.0.p0.9.el6.noarch              1/2 
Cleanup    : mahout-0.7+8-1.cdh4.1.2.p0.12.el6.noarch              2/2 
Verifying  : mahout-0.7+12-1.cdh4.2.0.p0.9.el6.noarch              1/2 
Verifying  : mahout-0.7+8-1.cdh4.1.2.p0.12.el6.noarch              2/2 

Updated:
mahout.noarch 0:0.7+12-1.cdh4.2.0.p0.9.el6                                                             

Complete!

我对 Java 也完全陌生。

我编译不正确吗?

我是否需要在调用 javac 的命令行上指定一些包含路径?

4

3 回答 3

2

所以事实证明这很简单,只要你知道你需要的罐子在哪里。在 cloudera mahout 发行版中,它们位于 /usr/lib/mahout 和 /usr/lib/mahout/lib 中。

$ javac -cp "/usr/lib/mahout/*:/usr/lib/mahout/lib/*:." RecommenderIntro.java 
$ java -cp "/usr/lib/mahout/*:/usr/lib/mahout/lib/*:." RecommenderIntro 

RecommendedItem[item:104, value:4.257081]
于 2013-03-23T04:26:23.813 回答
1

这是一个简单的 Java 问题。安装软件包本身不会影响您的javac命令。您始终需要在其-cp参数中包含编译所需的所有类。

使用构建系统(如 IDE 或 Maven)要容易得多,您可以在其中导入依赖项。

于 2013-03-21T08:30:53.747 回答
0

我们可以使用mahoutcommand 来获取它classpath,但有时它会提供额外的信息。您可以更改文件$MAHOUT_HOME/bin/mahout以使其正常工作。

javac -cp `mahout classpath` File.java -d classes
于 2014-02-14T22:02:43.637 回答