这是一个已经被要求像在这个网站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被传递给构造从一个子类,是图像的名称(例如image.png)。 我也确信,我的资源文件夹是在项目文件夹的根目录,并包括在Eclipse项目源文件夹。 我还相信, System.getProperty("user.dir")
指向正确的位置。 我一直在使用的getResource()而不是的getResourceAsStream()也试过了,但它仍然无法正常工作。
尝试使用这样的: -
this.icon = ImageIO.read(new FileInputStream("res/test.txt"));
其中res
文件夹存在于同一级别的src
文件夹。 另外,如果你发现,斜线/
前res
移除文件夹名称。
作为参数传递的getResourceAsStream路径()相对应的类路径集。 因此,尝试改变这种
this.icon = ImageIO.read(this.getClass().getResourceAsStream("/resources/" + imgName));
至
this.icon = ImageIO.read(this.getClass().getResourceAsStream("resources/" + imgName));
我有同样的问题。 我用的路径“my_image.png”在第一,但它没有工作,所以我到处搜寻,并试图在网站上公布的其他解决方案,但没有一次成功。 我解决了矿山从这个改变我的代码
image = ImageIO.read(SpriteSheet.class.getResourceAsStream("res/image.png"));
这
image = ImageIO.read(SpriteSheet.class.getResourceAsStream("/image.png"));
我希望这可以帮助,尽管这个问题在5年前发布。
这可能会作为一个“不,咄!” 许多在这个网站,但它始终是必须指出的Java如何字面是。 区分大小写是关键,特别是如果你的.jar文件。
当你的.jar文件如果你的程序正常工作与编译,然后运行,但突然间越来越此问题。 请一定要检查你对你的文件夹/文件,并在你的代码的参考案例。 (除了确保他们在你的.jar)
希望这可以帮助任何人在这里结束了在看同样的问题。
试试这个:
this.icon = ImageIO.read(this.getClass().getResource("/resources/" + imgName));
你可以试试这个:
image = ImageIO.read(getClass().getResource("/resources/" + imgName));
请尝试使用以下
this.icon = ImageIO.read(this.getClass().getResourceAsStream("../resources/" + imgName));
是资源文件夹中的日食一类文件夹? 右键单击项目 - >属性 - > Java构建路径 - >库 - >添加类文件夹 - >(选择res文件夹),并将其添加为一个类文件夹。
试试这个
private BufferedImage get(String path) throws IOException{
URL url = this.getClass().getClassLoader().getResource(path);
String thing = url.getFile();
return ImageIO.read(new File(thing));
}
文章来源: java.lang.IllegalArgumentException: input == null! when using ImageIO.read to load image as bufferedImage