Изображение не загружается, получая недопустимый ввод исключений аргумента == ноль - PullRequest
0 голосов
/ 29 сентября 2018

Я пытаюсь загрузить изображение в игру, которую только что начал создавать, но когда я это делаю, возникают проблемы с нахождением моего изображения, как показано ниже:

`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;
}
}

1 Ответ

0 голосов
/ 29 сентября 2018

Этот оператор ImageLoader.class.getResource(path) возвращает null.

Проверить сгенерированный JAR (вы можете использовать его как любой ZIP-архив) или выходной каталог классов (если работает из IDE), если есть файл image.pngв каталоге textures.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...