2012-03-26 103 views
1

使用Eclipse IDE。行:getResources()返回空值

getClass().getResource("/res/bitmaps/image.png"); 

回報null。我在我的項目的根目錄中創建了res文件夾。

感興趣的代碼是:

bImage = ImageIO.read(getClass().getResource("/res/bitmaps/image.png")); 

,並拋出異常:

Exception in thread "main" java.lang.IllegalArgumentException: input == null! 
    at javax.imageio.ImageIO.read(ImageIO.java:1378) 
    at com.example.game.resource.Resources._loadImage(Resources.java:31) 
    at com.example.game.GameComponent.<init>(GameComponent.java:19) 
    at com.example.game.GameFrame.<init>(GameFrame.java:8) 
    at com.example.game.GameFrame.main(GameFrame.java:13) 

任何幫助嗎?

+0

什麼是位圖? – 2012-03-26 06:00:40

+0

你有什麼目錄結構? – 2012-03-26 06:01:48

+0

我的項目的根文件夾包含'src'和'res'文件夾。 'res'文件夾包含'bitmaps'文件夾,其中包含'image.png'。 – mneri 2012-03-26 06:24:19

回答

3
ImageIO.read(getClass().getResourceAsStream("res/drawable/image.png")); 

確保res文件夾位於類路徑中,使用項目屬性> Java build Path> Source選項卡進行驗證。如果不在課程路徑中,可以通過添加文件夾..按鈕在右側。

+0

已解決。解決方案是將'res'文件夾添加到構建路徑,並使用字符串「/bitmaps/image.png」獲取資源 – mneri 2012-03-26 06:31:54

1

你說這個資源是在「我的項目的根源」 - 它是你的構建路徑中的文件夾?您需要將它放在構建路徑中,以便Eclipse將其複製到輸出目錄(默認爲bin)。

+0

如何做到這一點? – mneri 2012-03-26 06:05:39

1
getClass().getResource("/res/drawable/image.png"); 

如果名字以「/」(「\ u002f」)開始,你應該給其image.png存在

+0

'res'文件夾包含'bitmaps'文件夾,其中包含'image.png'文件。 – mneri 2012-03-26 06:06:59

+0

@mneri它適用於我,我認爲你有一些構建路徑問題。 – 2012-03-26 06:14:33

+0

我這麼認爲。我的項目的根目錄包含'src'文件夾和'res'文件夾。我是否可以將'res'文件夾添加到構建路徑中?怎麼樣? – mneri 2012-03-26 06:22:34

0

的文件夾的路徑,那麼資源的絕對名稱是'/'後面的名稱部分。

否則,絕對名稱是以下形式的: 程序包/名稱

凡package_name是該對象以「/」取代的包名「」 ( '\ u002e')。