2011-12-28 76 views
6

可能重複(解決):https://stackoverflow.com/a/1133132/783469如何從Java資源加載圖標?

我有我的應用程序,存儲在我的目錄/var/tmp/gameXbox/src/image/<here>圖標(JPG,PNG)。現在,我如何在應用程序中使用它們,而不使用硬鏈接而是作爲資源?

實施例:不工作

IconForMyButton = ImageIO.read(new File(
        ClassLoader.getSystemResourceAsStream("image/button1.png") 
       )); 

enter image description here

作品時,我用硬鏈接做:

IconForMyButton = ImageIO.read(new File(
         "/var/tmp/gameXbox/src/image/button1.png" 
       )); 
+2

確保圖像包含在應用程序的類路徑中,並使用相對鏈接 – Robin 2011-12-28 20:35:25

+0

您要加載的內容是什麼?來自classpath或文件系統的圖像?這是一個區別。你在混合起來。 – 2011-12-28 20:57:55

+0

@Google:請先確認,您想在按鈕上顯示此圖標,因爲您的變量正在提示。我對嗎? Regards – 2011-12-28 21:04:05

回答

9

資源裝載發生在類路徑的地方,相對於當前包。 如果/var/tmp/gameXbox/src/是在類路徑中,則:

ImageIO.read(ClassLoader.getSystemResource("image/button1.png")); 

但是,通常src文件夾包含在IDE的classpath中。嘗試將圖像添加到bin文件夾。

+0

project/build/classes/image/*存在。但不工作。看到我上面的編輯。 – YumYumYum 2011-12-28 20:53:57

+0

我編輯了我的答案。我甚至沒有意識到。你正試圖從'InputStream'創建'File'對象,而我則從'URL'創建。 – Darkhogg 2011-12-28 20:59:11

+0

import javax.imageio。*; (使用ImageIO) – shieldgenerator7 2015-03-12 16:14:23

4

我通常使用class.getResource對於這種操作的:

YourClass.class.getResource("image/button1.png") 

我用它來檢索從JAR檔案文件,但也應努力從文件系統資源檢索。

0

圖像不進入源文件夾,而是進入資源文件夾。修復您的IDE並使用Maven,它將與getResourceAsStream一起使用當前的上下文類加載器。