导致错误的原因如“构造函数未定义”

时间:2011-07-10 21:51:44

标签: java eclipse mahout

我正在尝试在Eclipse中编译“Mahout in Action”的示例代码。有一个标题为“LimitedMemoryDiffStorage.java”的java文件。这基本上只是定义一个类

class LimitedMemoryDiffStorage {

Recommender buildRecommender(DataModel model) throws TasteException {
  DiffStorage diffStorage = new MemoryDiffStorage(
    model, Weighting.WEIGHTED, true, 10000000L);
  return new SlopeOneRecommender(
    model, Weighting.WEIGHTED, Weighting.WEIGHTED, diffStorage);
 }

}

但是eclipse编译器声明了

  

构造函数MemoryDiffStorage(DataModel,Weighting,boolean,long)未定义

我认为它是在mahout-core库中定义的,并且已经包含在构建路径中,为什么它仍然会导致这种错误?

2 个答案:

答案 0 :(得分:4)

也许您使用的库版本与本书中描述的版本不同。很多时候,某些方法,构造函数甚至类都被更改甚至删除。检查这个的最好方法是检查mahout-core库的源代码,或至少检查字节代码。要在Eclipse中查看包含构造函数的方法,请按CTRL + SHIFT + T并键入类名,打开特定的MemoryDiffStorage类。然后在大纲视图中,您应该看到具有签名的实际构造函数。

答案 1 :(得分:2)

根据https://builds.apache.org/job/Mahout-Quality/javadoc/org/apache/mahout/cf/taste/impl/recommender/slopeone/MemoryDiffStorage.html的文档,MemoryDiffStorage构造函数需要三个参数,但是你传递了四个参数。