2013-05-03 94 views
0

我做了一個音頻播放器和研磨罐與NetBeans製成。加載我用過的圖像:執行罐子問題 - 未捕獲的錯誤獲取圖像

ClassLoader cl = this.getClass().getClassLoader(); 
    URL playerIconURL = cl.getResource("tp/audioplayer/Images/icon.png"); 
    if (playerIconURL != null){ 

     ImageIcon playerIcon = new ImageIcon(playerIconURL); 
     frame.setIconImage(playerIcon.getImage()); 
    } 
    else{ 

     System.err.println("cannot load player icon"); 
    } 

我提到文件夾Images是在src/tp/audioplayer中。

當我運行裏面的NetBeans的一切應用程序還好吧,但是當我在命令提示符下,應用程序啓動時執行的罐子,但它的空白,它會阻止,我得到:

enter image description here

燦你告訴我我做錯了什麼或者是什麼問題?提前致謝!

回答

0

嘗試任何這些:

// using getResourceAsStream 
InputStream is = this.getClass().getResourceAsStream("picture.gif"); 
// or 
InputStream is = MyClass.class.getResourceAsStream("stuff.ser"); 
// or 
InputStream is = MyApp.class.getClassLoader().getResourceAsStream("InWords.properties"); 

在JAR文件中的資源必須具有相同的包名稱作爲你打電話的getResourceAsStream類合格。或者,您可以使用以/開頭的絕對名稱,其中點將映射到/ s。如果你沒有領導/,你有一個相對的名字,並且包的名字將被前置。如果您使用/,您必須自己包含軟件包的名稱,或者包含資源在jar中提交的任何名稱。 例如,您可以指定/com/mindprod/mypackage/mystuff.ser或/com.mindprod.mypackage.mystuff.ser或簡單地指定mystuff.ser。不要使用Windows樣式文件名。這些不是文件名,而是與類文件一起存在的Java資源,無論是在jar中,還是有時在磁盤上獨立存在,或者在服務器上。

從理論上講,會的getResourceAsStream看在本地CLASSPATH,瓶子並在類文件從裝載目錄。

+0

像你說的,我試過,我仍然得到這個錯誤。也許我沒有把我的文件夾正確地到項目文件夾?這是完整路徑D:\ College \ Individual Projects \ Java \ Audio Player \ src \ tp \ audioplayer \ ld。l d是類的最後一個文件夾,現在我已經移動了ld中的Images文件夾;當我發佈圖像文件夾是在audioplayer。 – Survivor 2013-05-03 02:01:47

+0

我解決了我的問題,並且使用InputStream更好,所以thx :) – Survivor 2013-05-07 23:12:35

1

如果tp在類路徑中,你將不得不與cl.getResource("/tp/audioplayer/Images/icon.png")加載它,如果TP不是一個源文件夾(但仍加入到構建路徑。

如果添加TP作爲sourcefolder然後 cl.getResource("/audioplayer/Images/icon.png")

注意,罐子是區分大小寫,請確保您的大小寫敏感的文件路徑。

+0

我所有的軟件包都像tp.audioplayer.ld。等等,如果我讓cl.getResource(「/ audioplayer/Images/icon.png」),就像你說它根本不會加載圖像。 – Survivor 2013-05-03 01:57:12

+0

看編輯,忘了添加第一條路徑。假設tp是一個源文件夾(通常您將資源根文件夾添加爲源文件夾以避免必須將另一個目錄添加到路徑中)。 – arynaq 2013-05-03 02:06:21

+0

如果我用/開始路徑,仍然無法添加圖像。我收到來自else語句的錯誤消息 – Survivor 2013-05-03 02:08:50