ClassCastException - raz wyskakuje a raz nie

0

Podczas rzutowania klasy encji na obiekt pobrany z bazy danych wywala błąd:

Caused by: java.lang.ClassCastException: pl.model.Users cannot be cast to pl.model.Users

Nie mam pojęcia dlaczego, bo po zrestartowaniu serwera błąd czasami znika a czasem pozostaje. Jednakże po zniknięciu potem znów powaca. Co może być tego powodem ?

0

Na oko to ładujesz do classpath dwie wersje tej samej klasy. Tzn masz tą klasę pewnie w więcej niż jednym jarze. W efekcie problem może być uzależniony od kolejności ładowania jarów przy starcie aplikacji. Ale to tylko szklana kula...

0

Jest ktoś mi w stanie pomóc ?

1

Taki blad, ze klasa nie moze byc rzutowana na ten sam typ, wskazuje ze masz wiele classloaderow w projekcie, i raz klasa jest ladowana za pomoca jednego, a raz za pomoca drugiego. Class.equals() oraz rzutowania itp. dziala tylko wtedy tak jak oczekujesz, gdy klasa oraz classloader ktory ja zaladowal jest ten sam.

0

@Kandif - zeby powiedziec jak pozbyc sie bledu, to musisz pokazac kod itp. Poki co nie wiemy nic poza tym ze rzucany jest wyjatek.
Co do classloaderow i 'podobno' - jak widzisz, myliles sie, i ci ktorzy to mowili, rowniez. Zalezy co robisz, ale jak widac ty robisz bardziej zaawansowane rzeczy wiec musisz wiedziec o nich wiecej i juz.

0

Tak się składa że wrzuciłem kod w komentarzu na prośbę Shaloma. Ale wrzucam drugi (próbowałem zrobić od nowa projekt, z nadzieją że to pomoże) https://github.com/Kandif/ZoomPost. Teraz próbowałem zrobić to z Mavenem.

Znowu odpowiedź uzyskałem dzięki łaskawości kolegi. Błędem okazało się używanie adnotacji dla klasy która nie została wstrzyknięta do kontenera. Te adnotacje były właśnie potrzebne dla kontenera aby robił to automatycznie, ja stworzyłem obiekt ręcznie, więc także wszystko powinienem robić ręcznie (bez adnotacji). Po wstrzyknięciu klasy Dao przez (@Inject) i stworzenia settera dla menagera encji, wszystko zaczęło działać poprawnie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1