0

我正在尝试编译以下项目:https ://github.com/pplante/droidtowers (12 月 2 日版本,这是最后一个有效的版本)。我设法获得了所有依赖项等,它在 eclipse 和 IntelliJ-IDEA(这是原始项目)下编译。但是,在eclipse下运行时,这一行会出现以下错误:

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

这会在新游戏开始后通过主菜单使游戏崩溃。

现在,我知道 Room 类扩展了 GridObject,并且在 IntelliJ 下运行良好。我无法理解可能是什么问题,或者两个可执行文件之间的区别,所以欢迎任何帮助。也许IDEA项目中的编译器覆盖了默认值?(我从头开始制作了eclipse项目)。

这是使用最新的 Java 和 android sdk。

附录:这是完整的堆栈跟踪:

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)
4

1 回答 1

0

好吧,不能说我“修复”了错误(显然这只是泛型工作的方式或其他东西),但我删除了“.items”并且它起作用了,因为它是多余的:它基本上采用了一个返回 Array<GridObject 的函数>,它将其转换为数组 GridObject[],然后使用构造函数将其转换回类型 Array<GridObject>。

现在最大的谜团是为什么 IDEA 根本没有返回错误。可能是一些晦涩的编译器设置。

于 2013-08-23T14:33:06.723 回答