Необъяснимое исключение ClassCastException, добавленное в Play Framework - PullRequest
7 голосов
/ 10 декабря 2011

Я столкнулся со странной ошибкой при работе над проектом Play Framework.Во время работы моего проекта я иногда получаю ClassCastException, но ошибка такова:

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

Это обычно происходит, когда я вызываю метод find, например:

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

Если я перезапущу проект, проблема исчезнет, ​​но только временно.Это делает тестирование моего проекта серьезной болью.Как мне это исправить?

Ответы [ 3 ]

3 голосов
/ 11 декабря 2011

Я столкнулся с этой ошибкой в ​​режиме разработки в Play, в двух сценариях (насколько я помню):

  • Изменить сущность и попытаться восстановить значения из кэша, которые являются объектамиэтого класса сущности.
  • Ошибка компиляции при перезагрузке кода страницы / приложения

В обоих сценариях исправление ошибок компиляции или очистка кэша решило проблему.

Не говоря, что это единственные возможности, возможно, у вас возникли другие проблемы.

3 голосов
/ 10 декабря 2011

Скорее всего, это происходит потому, что вы каким-то образом загрузили класс Person под двумя разными загрузчиками классов. Когда класс загружается дважды в двух разных загрузчиках классов, это фактически два разных класса.

(К сожалению, я не могу сказать вам, где / как вы могли это сделать.)

(И немного любопытно, чтобы проблема появлялась в списке, который вы перечислили. Вы уверены, что именно там это происходит? Возможно, вам следует показать трассировку исключений.)

1 голос
/ 04 ноября 2013

В моем случае это связано с применением эволюции из веб-интерфейса. Кто-то поднял ошибку для этого , но до сих пор он не получил никакого внимания от команды разработчиков. К заявке прикреплен патч, но я его не пробовал, поэтому YMMV.

...