java.lang.IllegalArgumentException: input == null!当使用 ImageIO.read 将图像加载为缓冲图像时图像

2022-09-03 14:49:20

这个问题在这个网站上已经被问了100次,但我已经看了所有这些问题,即使它们都解决了,也没有一个解决方案对我有用。

以下是我的代码:

public Button1(Client client, String imgName) {
    this.client = client;   

    try {
        this.icon = ImageIO.read(this.getClass().getResourceAsStream("/resources/" + imgName));
    } catch (IOException e) {
        e.printStackTrace();
    }

当代码运行时,它会导致以下错误:

Exception in thread "main" java.lang.IllegalArgumentException: input == null!
at javax.imageio.ImageIO.read(Unknown Source)

字符串 imgName 从子类传递给构造函数,并且是图像的名称(例如图像.png)。我还确保我的资源文件夹位于项目文件夹的根目录中,并作为源文件夹包含在 eclipse 项目中。我还确保它指向正确的位置。我也尝试过使用getResource()而不是getResourceAsStream(),但它仍然不起作用。System.getProperty("user.dir")


答案 1

尝试使用这个:-

this.icon = ImageIO.read(new FileInputStream("res/test.txt"));

其中文件夹与文件夹位于同一级别。此外,如果您注意到,文件夹名称之前的斜杠已被删除。ressrc/res


答案 2

我知道这很旧,但我只是遇到了同样的问题。

检查以确保您的图片扩展程序不是大写的。

在我的图像资源文件夹中,我有“敌人.PNG”,但我试图加载“敌人.png”,你会认为会起作用,但不起作用。

因此,只需使您的扩展程序不大写即可。


推荐