2013-03-21 36 views
0

我正在使用NetBeans並將圖像加載到我的程序中,到目前爲止,我一直在src/images /中存儲所有圖像,這很好。但我想把我所有的軟件包名稱大寫,所以我重構了所有的軟件包名稱,以便它們都被大寫。所以「圖像」變成了「圖像」。我改變了所有文件路徑字符串來反映這一點,但是當我下次運行我的程序時,沒有任何圖像會加載。我在我的項目的構建部分中找到另一個名爲images的文件夾,其中包含我需要的一些圖像,因此我將src圖像文件夾中的所有內容複製到/ build/classes/images文件夾中,然後奇蹟般地重新開始工作。直到這一點,我已經把所有的圖像放在src/images /部分。圖像加載實際上是如何工作的?

那麼究竟發生了什麼?我是否需要開始將所需的所有新圖像保存在/ build/classes/images或舊的地方?圖像加載代碼現在決定在一個完全不同的地方看什麼?爲什麼有兩個版本的圖像文件夾?這是NetBeans生成的一些奇怪的東西嗎?

ImageIO.read(myClass.class.getResource("/images/myClassImg.png"); 
+1

確保您清理並構建項目以確保所做的更改反映在已編譯的代碼和NetBeans緩存中 – MadProgrammer 2013-03-21 20:28:10

回答

1

資源文件可以用jar包中的所有.class文件打包。然後它不是文件系統上的文件。因此路徑名稱區分大小寫,並使用'/'作爲路徑分隔符。一般資源URL區分大小寫。

上面應該是「/Images/myClassImg.png」。

但是,使用大寫包名稱與非常普遍的約定相反。

0

GetClass()函數應該可以工作。您也可以使用getAbsolutePath()

Image I = ImageIO.read(getClass().getResource("/images/myClassImg.png")); 
相關問題