【问题标题】:Why does this "new ImageIcon(getClass().getResource("files/icon.png")).getImage();" make my Program invisible?为什么这个“new ImageIcon(getClass().getResource("files/icon.png")).getImage();”让我的程序不可见?
【发布时间】:2015-07-20 23:11:51
【问题描述】:

这是我写的

 Image icon = new ImageIcon(getClass().getResource("files/icon.png")).getImage();

在一个 JFrame 扩展类中,然后设置框架的图标

this.setIconImage(icon);

我是这样做的,而不是简单地使用路径,否则如果我将项目导出为可执行的 .jar,图标就会消失。 (如此处所示:Once exported, java cannot find/draw images

现在出现的问题是,可执行的 .jar 以应有的方式工作(它创建一个文件夹以及一个 .xml 文件并写入其中),但没有生成可见框架。 但是,如果我在 eclipse 中运行程序,一切正常,我看到了框架。 我发现问题出在 ImageIcon 的创建上,因为如果我运行

getClass().getResource("files/icon.png");

一切正常。 该文件也在它的位置,所以这不应该是错误。

希望您能帮助我并提前致谢。

【问题讨论】:

  • 你使用的路径是相对的还是绝对的?
  • 可能是因为图片没有和 Jar 一起导出,所以抛出了NullPointerException
  • @Blip 相对于我在 (RTFrame, epvpimg.com/kOCDg) 中调用方法的类,@MadProgrammer 图像可以在正确路径下的导出文件中找到,所以我不这么认为: /
  • 所以,在代码中添加跟踪。打印getClass() 的值。打印getClass().getResource("files/icon.png") 的值。打印new ImageIcon(getClass().getResource("files/icon.png")) 的值。在控制台中查找异常堆栈跟踪。看看jar tvf yourjar.jar 给出了什么。通常调试的东西。如果您对我们说的只是框架没有出现,并且您不相信我们怀疑的内容是真实的,我们将无能为力。证明我们错了。
  • @JBNizet 我早该想到这个……抱歉。结果:pastebin.com/gSBwinby 现在的问题显然是资源,我用“.getResource”得到,因为它为空。不幸的是,我不知道如何解决这个问题!无论如何,感谢您到现在为止的大力帮助!

标签: java eclipse swing executable invisible


【解决方案1】:

好吧,这都是我的错…… @JBNizet 你又找到了正确的线索......路径“files/icon.png”->“Files/icon.png”

就是这种情况

【讨论】:

  • 不知道你为什么在这里回答,那么。如果答案很简短,评论就足够了
猜你喜欢
  • 1970-01-01
  • 2014-04-05
  • 2018-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-28
  • 2016-10-08
  • 2013-01-13
相关资源
最近更新 更多