在Java Swing中显示资源图像
问题描述:
我正在尝试使用Java Swing来显示简单的png图像。图像存储在项目文件夹内,更准确地说是:~/Workspace/MyProject/res/logo.png
。在Java Swing中显示资源图像
里面一个名为FirstAccess.java
类,它扩展JFrame
因此,我宣布:
final BufferedImage myLogo = ImageIO.read(new File("../res/logo.png"));
final JLabel logoLabel = new JLabel(new ImageIcon(myLogo));
// [...]
但是,这产生了以下异常。
线程“main”中的异常javax.imageio.IIOException:无法读取输入文件!
在javax.imageio.ImageIO.read(ImageIO.java:1301)
[...]
进程退出代码为1
什么问题完成了吗?我使用了错误的路径吗?是否可能存在某些访问权限问题?
注:FirstAccess.java
是恰好位于~/Workspace/MyProject/src/main/
注2:我也试图与路径"~/Workspace/MyProject/res/logo.png"
内......但仍然给出了同样的问题。
答
对于资源,请改为使用getClass().getResource(String)
。
你的情况: final BufferedImage myLogo = ImageIO.read(getClass().getResource("../res/logo.png"));
(或final BufferedImage myLogo = ImageIO.read(FirstAccess.class.getResource("../res/logo.png"));
静态背景下)
应用资源将被部署的时间内成为嵌入的资源,所以它是明智的,开始访问他们,如果他们, 马上。 ** [tag:embedded-resource]必须通过URL而不是文件访问。**请参阅[info。页面为嵌入式资源](http://stackoverflow.com/tags/embedded-resource/info)如何形成的URL。 –