如何修复使用ImageIO.read加载纹理的错误[Java] [入门]

问题描述

最近,我决定尝试远离Java,并尝试重新使用Java,并且正在关注制作游戏的youtube教程系列。我试图加载使用以下代码制作的纹理 (我正在使用Eclipse)

animateLayout()

并且我收到以下错误

public static Render plane = loadBitmap("/textures/floor.png");

public static Render loadBitmap(String fileName) {
    try {
        BufferedImage image = ImageIO.read(Texture.class.getResourceAsstream(fileName));
        int width = image.getWidth();
        int height = image.getHeight();
        Render result = new Render(width,height);
        image.getRGB(0,width,height,result.pixels,width);
        return result;
    }catch (Exception e) {
        Debug.logError("CRASH | Failed to load image");
        throw new RuntimeException(e);
    }
}

我的项目结构如下:

Caused by: java.lang.RuntimeException: java.lang.IllegalArgumentException: input == null!
at net.xernia.bluehero.graphics.Texture.loadBitmap(Texture.java:23)
at net.xernia.bluehero.graphics.Texture.<clinit>(Texture.java:11)
... 5 more
Caused by: java.lang.IllegalArgumentException: input == null!
at java.desktop/javax.imageio.ImageIO.read(ImageIO.java:1356)
at net.xernia.bluehero.graphics.Texture.loadBitmap(Texture.java:15)
... 6 more

我在Properties-> java构建路径下将res添加为modulepath下的类文件夹。抱歉,对于您中的某些人来说,这是一个非常琐碎的错误,但这使我无休止地大笑。希望这是足够的信息,如果我遗漏了一些重要的东西,请让我知道:)

解决方法

将文件夹res移至src,我们有:

src
    package
         Texture.java
    res
         textures
             floor.png

,然后将文件名更改为/res/textures/floor.png。 (不要忘记重建项目)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...