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」を削除して機能しました。 >、配列 GridObject[] に変換してから、コンストラクターを使用して Array<GridObject> 型に変換し直していました。

現在最大の謎は、IDEA がエラーをまったく返さなかった理由です。あいまいなコンパイラ設定である可能性があります。

于 2013-08-23T14:33:06.723 に答える