Вызвано: java.lang.ClassCastException: - PullRequest
0 голосов
/ 25 февраля 2012

Сегодня я работал над своей программой и получил эту ошибку.

Caused by:java.lang.ClassCastException: org.cubeville.blocks.CrossedBlockBrush cannot be  cast to org.cubeville.blocks.DefaultBlockBrush

Моя программа, конечно, на Java.Он использует lwjgl и пятно.Мне было интересно, что может вызвать это, и если есть наверняка исправить.

Спасибо

Ответы [ 3 ]

2 голосов
/ 25 февраля 2012

Сначала проверьте, что DefaultBlockBrush действительно является супертипом CrossedBlockBrush.Если это не так, то актерский состав просто незаконен.Проверьте, используете ли вы одну и ту же версию вашей библиотеки для компиляции и запуска;возможно, эти отношения справедливы для одного, но не для другого.

Если DefaultBlockBrush действительно является супертипом CrossedBlockBrush, то вы можете получить такой тип сообщения, если CrossedBlockBrush и DefaultBlockBrush были загружены двумя разными загрузчиками классов.Такое может происходить в плохо настроенном веб-приложении или приложении, основанном на какой-либо другой системе на основе компонентов, с несколькими ClassLoader s, такими как OSGi.

0 голосов
/ 25 февраля 2012

Я могу вам сказать, что: -

org.cubeville.blocks.CrossedBlockBrush

нельзя привести к: -

org.cubeville.blocks.DefaultBlockBrush

Но это просто говорит о том, что сказано в исключении.

Где-то в вашем коде у вас есть: -

instance = (DefaultBlockBrush) originalInstance

, и поскольку CrossedBlockBrush не реализует или не расширяет DefaultBlockBrush, вы получаете исключение приведения.

0 голосов
/ 25 февраля 2012

Вы применяете что-то вроде

DefaultBlockBrush blockBrush = (DefaultBlockBrush) brush;

, но кисть с правой стороны имеет тип CrossedBlockBrush.Вы можете сделать это, если CrossedBlockBrush был подклассом DefaultBlockBrush, но, очевидно, это не так.

...