我玩了! 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?
答案 0 :(得分:3)
我也遇到了这个问题,结果发现奇怪的行为是package object models
already being defined in the framework造成的。这基本上使package object models
禁止框架的用户。我的解决方案是将我的库pimping放在实用程序对象(例如utils.DateUtils)中,并在适当的时候导入它们。