在处理Play Framework项目时,我遇到了一个奇怪的错误。当我的项目正在运行时,我有时会收到ClassCastException,但错误是这样的:
ClassCastException occured : models.Person cannot be cast to models.Person
这通常发生在我调用find方法时,例如:
Person p = Person.find("name=?","Joe").first();
如果我重新启动项目,问题就会消失,但只能暂时解决。它使测试我的项目成为一个主要的痛苦。我该如何解决这个问题?
答案 0 :(得分:3)
这很可能是因为你以某种方式在两个不同的类加载器下加载了Person类。当一个类在两个不同的类加载器中加载两次时,它实际上是两个不同的类。
(不幸的是,我无法告诉你在哪里/如何做到这一点。)
(在你列出的语句中弹出问题有点好奇。你确定它正在发生的地方吗?也许你应该展示异常追溯。)
答案 1 :(得分:3)
我在Play中的开发模式下遇到过这种错误,在两种情况下(据我所知):
在两种情况下,修复编译错误或清理缓存都解决了这个问题。
不是说那些是唯一的可能性,可能是你还有其他问题。
答案 2 :(得分:1)
就我而言,这与从Web界面应用演进有关。有人提出a bug for this,但到目前为止还没有得到开发团队的任何关注。票证上附有补丁,但我没试过,所以YMMV。