2

我有戏!2 应用程序和一些跨模型重用的功能。我想把它们放在models包对象中,如下例所示

import java.util.Date

package object models {
  case class RichDate(d: Date) {
    def timestamp: Long = d.getTime / 1000
  }

  implicit def enrich(d: Date): RichDate = new RichDate(d)
}

这样我就可以在模型中到处都有日期字段了myDate.timestamp。ù

这可以编译,甚至可以在单元测试中使用。但是,由于某种原因,当我运行实际的应用程序时,我得到了一个执行异常[NoSuchMethodError: models.package$.enrich(Ljava/util/Date;)Lmodels/package$RichDate;]

是否有理由说明上述内容在 Play 中不起作用!应用程序,同时是有效的 Scala?

4

1 回答 1

3

我也遇到过这个问题,结果发现奇怪的行为是由于package object models 已经在框架中定义的。这基本上使package object models框架的用户不受限制。我的解决方案是将我的库拉皮条放在实用程序对象(例如 utils.DateUtils)中,并在适当的时候导入它们。

于 2012-09-26T03:38:50.953 回答