加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 将图像添加到jar

发布时间:2020-12-15 00:59:59 所属栏目:Java 来源:网络整理
导读:我想将图标设置为我的JFrame.我做以下事情: Image icon = Toolkit.getDefaultToolkit().getImage("src/images/icon.jpg");this.setIconImage(icon); 当我从netbeans运行此代码时它工作正常,但是当我尝试从jar文件运行此代码时,图像不会显示在我的JFrame中.
我想将图标设置为我的JFrame.我做以下事情:
Image icon = Toolkit.getDefaultToolkit().getImage("src/images/icon.jpg");
this.setIconImage(icon);

当我从netbeans运行此代码时它工作正常,但是当我尝试从jar文件运行此代码时,图像不会显示在我的JFrame中.我试图将图像作为资源加载:

this.setIconImage(Toolkit.getDefaultToolkit().getImage(getClass().getResource("/src/images/icon.jpg")));

但是当我运行此代码时,它会因NullPointerException而失败

Uncaught error fetching image:
java.lang.NullPointerException
        at sun.awt.image.URLImageSource.getConnection(URLImageSource.java:99)
        at sun.awt.image.URLImageSource.getDecoder(URLImageSource.java:113)
        at sun.awt.image.InputStreamImageSource.doFetch(InputStreamImageSource.java:240)
        at sun.awt.image.ImageFetcher.fetchloop(ImageFetcher.java:172)
        at sun.awt.image.ImageFetcher.run(ImageFetcher.java:136)

我该怎么做这个工作?

编辑:
谢谢大家,
通过将图像指定为来解决问题

Toolkit.getDefaultToolkit().getImage(getClass().getClassLoader().getResource("images/icon.JPG"))

至于它看起来很奇怪,如果是这样的话会更好

this.setIconImage(new ImageIcon(pathToIcon).getImage());

解决方法

查看URLImageSource的源代码,看起来getConnection抛出NPE的原因是它的url为null.这让我怀疑
getClass().getResource("/src/images/icon.jpg")

返回null.如果找不到具有该路径名的资源,它就会这样做.

我敢打赌,问题是你的路径错了.

要证明/反驳这一点,您应该在JAR文件上运行jar tvf,并查找与“icon.jpg”匹配的行.相应的路径名是否与您使用的路径名相同?如果没有,请使用getResource调用中匹配行的路径名,它应该可以工作.或者,如果文件根本没有显示,请查看NetBeans构建配置,告诉它将什么放入JAR文件中. (我不是NetBeans用户,所以我不能说你需要在哪里看……)

如果这导致你无处可去,另一种可能性是getClass().getResource(…)使用的是不知道包含图像的JAR文件的类加载器. (这对我来说似乎不太可能…)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读