いつもお世話になっています
今回JavaFXのエラーについてお聞きしたいと思います
今回作っているプログラムで java.lang.ExceptionInInitializerError が発生してしまいました
意味はstatic型の初期化に失敗していることは分かったのですがいまいち原因がわかりません
以下エラー、ソースです
Java
1Exception in thread "JavaFX Application Thread" java.lang.ExceptionInInitializerError 2at bace.MapBace.<init>(MapBace.java:6) 3[省略] 4Caused by: java.lang.NullPointerException 5 at bace.PlayerBace.minusMilitaryMoney(PlayerBace.java:86)
Java
1public class AllData { 2 public static MapBace Map = null; 3 public static int MapX = 16; 4 public static int MapY = 14; 5 6 public static GameField GF = new GameField(); 7}
Java
1public class MapBace extends TMObject { 2 private AreaBace[][] AreaList = new AreaBace[AllData.MapX][AllData.MapY]; ←MapBace.java:6 3}
Java
1public class PlayerBace extends TMObject { 2 public void minusMilitaryMoney (int value) { 3 MilitaryMoney -= value; 4 AllData.GF.setInfo(); ←PlayerBace.java:86 5 } 6}
Java
1public void setInfo () { ←AllData.GF.setInfo 2 Platform.runLater(new StartResetInfo()); 3 } 4 5public class StartResetInfo implements Runnable { 6 public void run () { 7 MilitaryMoney.setText(String.valueOf(Player1.getMilitaryMoney())); 8 MilitaryResource.setText(String.valueOf(Player1.getMilitaryResource())); 9 MilitaryPersonnel.setText(String.valueOf(Player1.getTroopList().size()) + "/" + String.valueOf(Player1.getSoldierList().size()) + "/" + String.valueOf(Player1.getMilitaryPersonnel())); 10 } 11 }
メソッドの名前があれですが気にしないでください
なぜNullPointerになっているかがわかりません
自分が考えるにはAllDataのstatic型を生成するときにエラーが発生しているように思えるのですが回避方法がわかりません
また追記が必要な場合追記を行います
[追記]
流れはMapBaceでAreaList(配列)の大きさをAllDataにあるMapX,MapYで設定しているところでエラーが出ています
このことからAllDataのstatic変数の初期化に問題があるかと思います
ですが原因部分としてあげられているのがCaused Byに書かれているPlayerBaceのminusMilitaryMoneyと全く違うところでした
そしてminusMilitaryMoneyの指している先にAllData.GF(AllDataのstatic変数)がありました
これからもわかる通りやはりAllDataのstatic変数全体に問題があると思います
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。