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

tyl*_*ler 13 java bufferedimage javax.imageio

这是一个在这个网站上被问过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();
    }
Run Code Online (Sandbox Code Playgroud)

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

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

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

Sud*_*hul 12

试试这个: -

this.icon = ImageIO.read(new FileInputStream("res/test.txt"));
Run Code Online (Sandbox Code Playgroud)

其中,res文件夹存在于同一级别的src文件夹中.此外,如果您注意到,删除/res文件夹名称前的斜杠.


PSR*_*PSR 0

尝试这个:

this.icon = ImageIO.read(this.getClass().getResource("/resources/" + imgName));
Run Code Online (Sandbox Code Playgroud)