【问题标题】:what causes the error like " the constructor is undefined"是什么导致了“构造函数未定义”之类的错误
【发布时间】:2011-10-02 09:43:29
【问题描述】:

我正在尝试在 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库中定义的,并且已经包含在构建路径中,为什么还是会出现这种错误?

【问题讨论】:

  • 我是作者。是的,只是代码自本书草稿以来发生了变化。最终草案将匹配 Mahout 0.5。

标签: java eclipse mahout


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多