2013-08-02 1 views
0

Я пытаюсь скомпилировать следующий проект: https://github.com/pplante/droidtowers (версия декабря 02, которая является последней, которая работает). Мне удалось получить все зависимости и т. Д., И он компилируется как в eclipse, так и в IntelliJ-IDEA (который является исходным проектом). Однако, при работе в затмении следующее сообщение об ошибке появляется в этой строке:Ошибка ClassCastException: [Ljava.lang.Object; не может быть применено к [Lcom.happydroids.droidtowers.entities.GridObject;

Array<GridObject> rooms = new Array<GridObject>(gameGrid.getInstancesOf(Room.class).items); 

Это разбивает игру после того, как новая игра начинается, мимо главного меню.

Теперь я знаю, что класс Room расширяет GridObject, и это работает под IntelliJ. Я не могу окунуться в голову, что может быть проблемой или разницей между обоими исполняемыми файлами, поэтому любая помощь будет приветствоваться. Может быть, по умолчанию в компиляторе переопределяется проект IDEA? (Я сделал проект Eclipse с нуля).

Использование последней версии Java и android sdk.

ДОПОЛНЕНИЕ: Вот полный StackTrace:

ago 05, 2013 3:14:57 PM com.happydroids.platform.DesktopUncaughtExceptionHandler uncaughtException 
SEVERE: Uncaught exception! 
com.badlogic.gdx.utils.GdxRuntimeException: java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Lcom.happydroids.droidtowers.entities.GridObject; 
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:111) 
Caused by: java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Lcom.happydroids.droidtowers.entities.GridObject; 
    at com.happydroids.droidtowers.controllers.AvatarLayer.setupInitialAvatars(AvatarLayer.java:191) 
    at com.happydroids.droidtowers.scenes.TowerScene.create(TowerScene.java:145) 
    at com.happydroids.droidtowers.scenes.components.SceneManager.pushScene(SceneManager.java:39) 
    at com.happydroids.droidtowers.scenes.components.SceneManager.changeScene(SceneManager.java:26) 
    at com.happydroids.droidtowers.scenes.LoadTowerSplashScene.render(LoadTowerSplashScene.java:29) 
    at com.happydroids.droidtowers.DroidTowersGame.render(DroidTowersGame.java:216) 
    at com.happydroids.droidtowers.LwjglApplicationShim.render(LwjglApplicationShim.java:50) 
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:190) 
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:108) 

com.badlogic.gdx.utils.GdxRuntimeException: java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Lcom.happydroids.droidtowers.entities.GridObject; 
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:111) 
Caused by: java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Lcom.happydroids.droidtowers.entities.GridObject; 
    at com.happydroids.droidtowers.controllers.AvatarLayer.setupInitialAvatars(AvatarLayer.java:191) 
    at com.happydroids.droidtowers.scenes.TowerScene.create(TowerScene.java:145) 
    at com.happydroids.droidtowers.scenes.components.SceneManager.pushScene(SceneManager.java:39) 
    at com.happydroids.droidtowers.scenes.components.SceneManager.changeScene(SceneManager.java:26) 
    at com.happydroids.droidtowers.scenes.LoadTowerSplashScene.render(LoadTowerSplashScene.java:29) 
    at com.happydroids.droidtowers.DroidTowersGame.render(DroidTowersGame.java:216) 
    at com.happydroids.droidtowers.LwjglApplicationShim.render(LwjglApplicationShim.java:50) 
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:190) 
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:108) 
+0

Если вы разместите stacktrace, это будет здорово. –

+0

Я добавил stacktrace (не знаю, должен ли я добавить комментарий, говорящий об этом). В любом случае, я здесь не понимаю ... если я установил Array x = ... он отлично работает. Кроме того, .items возвращает объект типа GridObject [] (так, регулярный массив), и конструктор для Array ожидает такого типа объекта. Почему я получаю исключение для кастинга? Кроме того, массив в этой точке содержит 16 нулей. – neutromancer

ответ

0

Ну, не могу сказать, что «фиксированный» ошибка (очевидно, что это именно так, как дженерики работать или что-то), но я удалил «.items» и работал, потому что он был избыточным: он в основном выполнял функцию, которая возвращает Array <GridObject>, он преобразовывал его в массив GridObject [], а затем использовал конструктор для преобразования его обратно в массив Array <GridObject>.

Самая большая проблема теперь в том, почему ИДЕЯ не вернула ошибку вообще. Может быть какая-то непонятная настройка компилятора.

Смежные вопросы