2017-05-25 66 views
0

我正在嘗試使用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"內​​......但仍然給出了同樣的問題。

+2

應用資源將被部署的時間內成爲嵌入的資源,所以它是明智的,開始訪問他們,如果他們, 馬上。 ** [tag:embedded-resource]必須通過URL而不是文件訪問。**請參閱[info。頁面爲嵌入式資源](http://stackoverflow.com/tags/embedded-resource/info)如何形成的URL。 –

回答

0

對於資源,請改爲使用getClass().getResource(String)
你的情況: final BufferedImage myLogo = ImageIO.read(getClass().getResource("../res/logo.png"));

final BufferedImage myLogo = ImageIO.read(FirstAccess.class.getResource("../res/logo.png"));靜態背景下