2011-04-18 129 views
1

我的程序中有一組5個圖像。該程序將被編譯爲一個單獨的.JAR文件,因此需要從中讀取它們。然而,當我作出這樣訪問.JAR文件中的圖像

images = new ArrayPP<ImageIcon>(
      new ImageIcon(getClass().getResource("/bha/resources/Portal Test Chamber 17 - Part 1.png")), 
      new ImageIcon(getClass().getResource("/bha/resources/Portal Test Chamber 17 - Part 2.png")), 
      new ImageIcon(getClass().getResource("/bha/resources/Portal Test Chamber 17 - Part 3.png")), 
      new ImageIcon(getClass().getResource("/bha/resources/revit logo - glass.png")), 
      new ImageIcon(getClass().getResource("/bha/resources/The All-Knowing Octopus.png"))); 

調用它在IDE中進行測試時,在JMenuItem S中的圖標作品(例如,jMenuItem.setIcon(new javax.swing.ImageIcon(getClass().getResource("/bha/resources/icon.png")));將永久有效)和,但回報爲null當編譯爲JAR文件。

+0

愚蠢的問題,但是,你確定圖像被複制到jar文件,對不對? – MeBigFatGuy 2011-04-18 04:00:45

+0

假設的jar文件命名爲bha.jar,試用./resources/Portal測試分庭17 - Part 1.png「 – Senthil 2011-04-18 04:01:51

+0

@MeBigFatGuy是的,我反編譯'.JAR'文件並檢查 – Supuhstar 2011-04-18 04:06:54

回答

1

鑑於getResource返回一個URL,我猜測它不喜歡空格。作爲一個測試,我試着做

new ImageIcon(getClass().getResource(URLEncoder.encode("/bha/resources/Portal Test Chamber 17 - Part 1.png", "UTF-8"))), 
+0

仍然會拋出一個'NullPointerException',結果沒有改變。 – Supuhstar 2011-04-18 04:19:26

+0

但是,這給了我使用空間名稱的想法,而且工作得很好,謝謝。 – Supuhstar 2011-04-18 04:24:15