Play Framework中抛出了无法解释的ClassCastException

时间:2011-12-10 18:00:58

标签: exception playframework classcastexception

在处理Play Framework项目时,我遇到了一个奇怪的错误。当我的项目正在运行时,我有时会收到ClassCastException,但错误是这样的:

ClassCastException occured : models.Person cannot be cast to models.Person

这通常发生在我调用find方法时,例如:

Person p = Person.find("name=?","Joe").first();

如果我重新启动项目,问题就会消失,但只能暂时解决。它使测试我的项目成为一个主要的痛苦。我该如何解决这个问题?

3 个答案:

答案 0 :(得分:3)

这很可能是因为你以某种方式在两个不同的类加载器下加载了Person类。当一个类在两个不同的类加载器中加载两次时,它实际上是两个不同的类。

(不幸的是,我无法告诉你在哪里/如何做到这一点。)

(在你列出的语句中弹出问题有点好奇。你确定它正在发生的地方吗?也许你应该展示异常追溯。)

答案 1 :(得分:3)

我在Play中的开发模式下遇到过这种错误,在两种情况下(据我所知):

  • 修改实体并尝试从缓存中恢复属于该实体类对象的值。
  • 重新加载页面/应用程序代码时出现编译错误

在两种情况下,修复编译错误或清理缓存都解决了这个问题。

不是说那些是唯一的可能性,可能是你还有其他问题。

答案 2 :(得分:1)

就我而言,这与从Web界面应用演进有关。有人提出a bug for this,但到目前为止还没有得到开发团队的任何关注。票证上附有补丁,但我没试过,所以YMMV。