Я пытаюсь загрузить изображение в игру, которую только что начал создавать, но когда я это делаю, возникают проблемы с нахождением моего изображения, как показано ниже:
`Exception in thread "Thread-0" java.lang.IllegalArgumentException: input == null!
at java.desktop/javax.imageio.ImageIO.read(ImageIO.java:1400)
at me.louisnathan.game.gfx.ImageLoader.loadImage(ImageLoader.java:12)
at me.louisnathan.game.Game.init(Game.java:32)
at me.louisnathan.game.Game.run(Game.java:60)
at java.base/java.lang.Thread.run(Thread.java:834)`
Изображение находится впапка с текстурами, которая находится в другой папке с именем res.Папка res была добавлена в путь сборки.Мое изображение называется image.png.Изображение было сделано в фотошопе.
Мой код:
Класс игры
public class Game implements Runnable {
public int width, height;
public String title;
private Display display;
private Thread thread;
private BufferStrategy bs;
private Graphics g;
private BufferedImage image;
private boolean isRunning = false;
public Game(String title, int width, int height) {
this.width = width;
this.height = height;
this.title = title;
}
private void init() {
display = new Display(title, width, height);
image = ImageLoader.loadImage("/textures/image.png");
}
private void tick() {
}
private void render() {
bs = display.getCanvas().getBufferStrategy();
if (bs == null) {
display.getCanvas().createBufferStrategy(3);
return;
}
g = bs.getDrawGraphics();
// Clearing Screen
g.clearRect(0, 0, width, height);
// Start Rendering
// End Rendering
bs.show();
g.dispose();
}
public void run() {
init();
while (isRunning) {
tick();
render();
}
}
public synchronized void start() {
if (isRunning)
return;
isRunning = true;
thread = new Thread(this);
thread.start();
}
public synchronized void stop() {
if (!isRunning)
return;
isRunning = false;
try {
thread.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
ImageLoaderКласс
public class ImageLoader {
public static BufferedImage loadImage(String path) {
try {
return ImageIO.read(ImageLoader.class.getResource(path));
} catch (IOException e) {
e.printStackTrace();
System.exit(1);
}
return null;
}
}