java.lang.IllegalArgumentException: input == null!

Meu programa ele salva normalmente, porém quando vou carregar ele da o seguinte erro

Exception in thread "Thread-1" java.lang.IllegalArgumentException: input == null!
	at java.desktop/javax.imageio.ImageIO.read(ImageIO.java:1358)
	at com.guto.world.World.<init>(World.java:27)
	at com.guto.world.World.restartGame(World.java:114)
	at com.guto.main.Menu.applySave(Menu.java:74)
	at com.guto.main.Menu.tick(Menu.java:60)
	at com.guto.main.Game.tick(Game.java:157)
	at com.guto.main.Game.run(Game.java:220)
	at java.base/java.lang.Thread.run(Thread.java:833)

alguém pode me ajudar a resolver?

Como é o código que lê a imagem?

public World(String path) {
		try {
			BufferedImage map = ImageIO.read(getClass().getResourceAsStream(path));
			int[] pixels = new int[map.getWidth() * map.getHeight()];
			WIDTH = map.getWidth();
			HEIGHT = map.getHeight();
			tiles = new Tile[map.getWidth() * map.getHeight()];
			
			map.getRGB(0, 0, map.getWidth(), map.getHeight(), pixels, 0, map.getWidth());
			
			for(int xx = 0; xx<map.getWidth(); xx++) {
				for(int yy = 0; yy<map.getHeight(); yy++) {
					
					int pixelAtual = pixels[xx +(yy * map.getWidth())];
					tiles[xx+(yy * WIDTH)] = new FloorTile(xx*16, yy*16, Tile.TILE_FLOOR);
					
					if(pixelAtual == 0xFF000000) {
						//Floor
						tiles[xx+(yy * WIDTH)] = new FloorTile(xx*16, yy*16, Tile.TILE_FLOOR);
					} else if(pixelAtual == 0xFFFFFFFF) {
						//Wall
						tiles[xx+(yy * WIDTH)] = new WallTile(xx*16, yy*16, Tile.TILE_WALL);
					} else if(pixelAtual == 0xFF0026FF) {
						//Player
						Game.player.setX(xx*16);
						Game.player.setY(yy*16);
					}
					else if(pixelAtual == 0xFFFF0000){
						//Enemy
						BufferedImage[] buf = new BufferedImage[3];
						buf[1] = Game.spritesheet.getSprite(128, 16, 16, 16);
						buf[2] = Game.spritesheet.getSprite(128+16, 16, 16, 16);
						Enemy en = new Enemy(xx*16, yy*16, 16, 16, Entity.ENEMY_EN);
						Game.entities.add(en);
						Game.enemies.add(en);
					} else if(pixelAtual == 0xFFFF6A00){
						//Weapon
						Game.entities.add(new Weapon(xx*16, yy*16, 16, 16, Entity.WEAPON_EN));
					} else if(pixelAtual == 0xFFF4B38D){
						//HealthPotion
						HealthPotion potion = new HealthPotion(xx*16, yy*16, 16, 16, Entity.HEALTHPOTION_EN);
						//potion.setMask(8, 8, 8, 8);
						Game.entities.add(potion);
						
					} else if(pixelAtual == 0xFFFFD800){
						//Ammo
						Game.entities.add(new Ammo(xx*16, yy*16, 16, 16, Entity.AMMO_EN));
					}
				}
			}
			
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

Esse é o código utilizado para ler td que tem no mapa desde a posição do jogador, as paredes, inimigos e etc.

Ou você está passando o path errado, ou o arquivo não está no classpath de sua aplicação.