2011-12-10 14 views
7

Podczas pracy nad projektem Play Framework występował dziwny błąd. Chociaż mój projekt działa, będę czasami otrzymać ClassCastException, ale błąd jest to:Niewyobrażalny wyjątek ClassCastException w strukturze Play

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

Dzieje się tak zwykle, gdy dzwonię sposób znaleźć takie jak:

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

Jeśli ponownie uruchomię projekt, problem zniknie, ale tylko tymczasowo. To sprawia, że ​​testowanie mojego projektu jest poważnym problemem. Jak to naprawić?

+0

Mam do czynienia z tym samym problemem. Wierzę, że jest to coś związanego z funkcją "przeładowania" serwera sieciowego. Wygląda na to, że jest uszkodzony lub moja maszyna jest źle skonfigurowana. Ponieważ Play jest za mało jeszcze, zakład w pierwszej opcji. –

+0

Mam ten sam problem w grze 2.6.3. – nemoo

+0

Jak wspomniał powyższy @HotLicks, może to być problem z przestrzenią nazw. Nie zauważyłem, że miałem dwa pliki 'main.scala.html' (jeden w podprojekcie), który wyrzucał mi ten * błąd runtime * - więc zmiana nazwy pliku sprawiła, że ​​wszystko zniknęło –

Odpowiedz

2

doświadczyłem tego błędu w trybie Dev w grze, w dwóch scenariuszach (o ile pamiętam).

  • Modyfikowanie i próbować odzyskać wartości z pamięci podręcznej, które są obiektami tej klasy encji.
  • Błąd kompilacji podczas przeładowywania kod strony/aplikacji

w obu scenariuszach naprawianie błędów kompilacji lub czyszczenia cache rozwiązać ten problem.

Nie mówiąc, że są to jedyne możliwości, może to oznaczać, że masz inne problemy.

+0

Widziałem to również kilka razy w trybie deweloperskim. Zwykle dzieje się to po zmianie kodu gorącego, nawet w przypadku plików niezwiązanych z jednostką (klasa Person w twoim przypadku). – chris

3

Jest to najprawdopodobniej spowodowane tym, że w jakiś sposób załadowano klasę Person w dwóch różnych programach ładujących klasy. Gdy klasa jest ładowana dwa razy w dwóch różnych programach ładujących klasy, to faktycznie dwie odrębne klasy.

(Niestety, nie mogę powiedzieć, gdzie/jak ty może tego zrobić.)

(I to jest trochę ciekawy mieć problemy pojawiają się na rachunku Państwo listę. Czy jesteś pewien, że to gdzie to występujące może powinieneś pokazać poinformować o wyjątku)

+0

Jestem ładna Na pewno jest to miejsce, w którym to się dzieje - po uruchomieniu projektu w moim lokalnym obszarze roboczym pojawi się strona błędu odtwarzania i podświetli tę instrukcję na czerwono. Ten błąd występuje zwykle, gdy dokonuję edycji kodu, zapisuję plik, a następnie wracam do mojego projektu. – torourke

+0

@torourke - Jeśli dynamicznie edytujesz/kompilujesz podczas pracy, to by to wyjaśniło. –

1

W moim przypadku jest to związane z zastosowaniem zmian w interfejsie internetowym. Ktoś podniósł a bug for this, ale jak dotąd nie otrzymał żadnej uwagi ze strony zespołu programistów. Do biletu jest dołączona łatka, ale nie próbowałem jej, więc YMMV.

Powiązane problemy