java.lang.IllegalArgumentException:输入== null!在javax.imageio.ImageIO.read(未知来源)

时间:2018-12-04 14:43:12

标签: java netbeans

我正在尝试将图标图像设置为

private void formWindowActivated(java.awt.event.WindowEvent evt) {                                     
  try {

        Image img=ImageIO.read(getClass().getResource("images/logo.png"));
        setIconImage(img);
    } catch (IOException ex) {
        System.out.println(ex.getMessage());
    }
}   

代码在NetBeans上编译后似乎可以正常工作,但是如果我从cmd运行jar文件,则会收到IllegalArgumentException。我似乎不明白如何在第一种情况下而不是在另一种情况下可见图像。

1 个答案:

答案 0 :(得分:0)

这将在Windows(不区分大小写的文件系统)下发生,在Windows上,加载成功可能会在解压缩的类路径上说Images/Logo.PNG,而从 jar (zip存档)开始加载会失败,路径区分大小写。

更正文件的大小写可能很麻烦(例如版本控制等),因此重命名可能更有用。

备注:

如果(actual!)类位于软件包x.y.z中,则jar中的目录路径为x/y/z/images/logo.png

因此要考虑的替代方法是非子类引用和绝对路径:

    Image img=ImageIO.read(Xyz.class.getResource("images/logo.png"));
    Image img=ImageIO.read(getClass().getResource("/u/v/w/images/logo.png"));