Witam serdecznie! Od wczoraj zmagam się z błędem, który wyskakuje i nie mogę dojść jego przyczyny.
Exception in thread "Thread-2" java.lang.ExceptionInInitializerError
at Game.init(Game.java:100)
at Game.run(Game.java:65)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NullPointerException
at Map.loadMap(Map.java:19)
at Map.<init>(Map.java:13)
at Map.<clinit>(Map.java:8)
... 3 more
To jest moja klasa, do której zmiennej statycznej chciałbym się odwołać
public class Map {
private int width, height;
public int[] tiles;
public static Map currentMap = null;
public static Map map1 = new Map(30, 20);
public Map(int width, int height) {
this.width = width;
this.height = height;
loadMap();
}
private void loadMap() {
for (int i = 0; i < height; i++) {
for (int j = 0; j < width; j++) {
tiles[j + i * width] = ThreadLocalRandom.current().nextInt(4);
}
}
}
public Sprite getSprite(int xAbsolute, int yAbsolute) {
int x = xAbsolute >> 4;
int y = yAbsolute >> 4;
int tile = tiles[xAbsolute + yAbsolute * width];
if (tile == 0) return Sprite.grassTile;
else
return Sprite.waterTile;
}
public static void setCurrentMap(Map map) {
currentMap = map;
}
}
Błąd ten pojawia się dopiero w momencie, kiedy w klasie mojej gry dodam tą linijkę:
Map.setCurrentMap(Map.map1);
I sytuacja jest o tyle dla mnie ciekawa, że tworząc drugi projekt i wklejając ten sam kod wszystko było w porządku, program działał i nie było błędu. Ale przy utworzeniu trzeciego, takiego samego projektu znowu nie działało ponownie. Proszę o pomoc jak zaradzić temu problemowi.