2017-05-27 28 views
-1

我遇到一個奇怪的問題。這裏是我的代碼片段:ImageIO.read getResource錯誤

... 
public xProgressBar(xTheme theme) { 
    try { 
     this.update = ImageIO.read(xTheme.class.getResource("/images/" + xThemeSettings.PROGRESSBAR_IMAGES[0])); 
    } 
... 

當我運行一個程序,我收到以下錯誤:

Exception in thread "main" java.lang.IllegalArgumentException: input == null! 
at javax.imageio.ImageIO.read(Unknown Source) 

下面是一個文件結構:

enter image description here

如您所見,res文件夾位於src文件夾的根目錄中。我讀過很多類似的問題,但沒有任何幫助。

+0

爲什麼'xTheme.class.getResource()'應該在'res /'下面找到資源?是什麼讓你覺得這可能有用? –

+0

那麼,我也試圖將res添加到路徑中,但這不起作用。 – AndrewGG

+0

res/images,/ res/images,./res/images。這些都不起作用。 – AndrewGG

回答

1

爲了讓getResource找到一個文件,相應的文件夾(在這種情況下爲res)需要位於classpath。如果它不在類路徑中,則由getResource返回的InputStream將始終爲null

Here's如何將文件夾添加到classpath

0

你的電話.getResource("/images/...")沒有成功,它返回null。因此你打電話ImageIO.read(null)並得到IllegalArgumentException

對於地處res文件夾中的資源由...getResource(...)發現 ,你需要res Eclipse項目的源文件夾。 要做到這一點:右鍵單擊您的res文件夾,在彈出菜單中選擇 Build path - >Use as Source Folder

screenshot

你會發現再

  • res將使用相同的圖標,你src文件夾出現。
  • res將被添加到您項目的.classpath文件中。