2012-03-26 7 views
1

Eclipse IDEを使用しています。ライン:getResources()はnullを返します

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

ビットマップとは何ですか? –

+0

あなたはどのディレクトリ構造を持っていますか? –

+0

私のプロジェクトのルートフォルダには 'src'フォルダと' res'フォルダがあります。 'res'フォルダには' image.png'を含む 'bitmaps'フォルダがあります。 – mneri

答えて

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

resフォルダがクラスパスにあることを確認し、プロジェクトプロパティ> Javaビルドパス>ソースタブを使用して確認します。クラスパスにない場合は、Add Folder ..ボタンをクリックして追加できます。

+0

解決済み。解決策は 'res'フォルダをビルドパスに追加し、文字列' '/bitmaps/image.png ''を使ってリソースを取得することでした。 – mneri

1

あなたはリソースが "自分のプロジェクトのルート"にあると言います - それはあなたのビルドパスのフォルダですか? Eclipseが出力ディレクトリ(デフォルトでbin)にそれをコピーするように、あなたのビルドパスにそれを置く必要があります。

+0

どうすればいいですか? – mneri

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

あなたは、リソースの絶対名、名前は「/」(「\のu002f」)で始まる場合image.png

+0

'res'フォルダには' image.png'ファイルを含む 'bitmaps'フォルダがあります。 – mneri

+0

@mneriそれは私のために働く、私はあなたbuildpathの問題があると思います。 –

+0

そうだと思います。私のプロジェクトのルートには 'src'フォルダと' res'フォルダがあります。ビルドパスに 'res'フォルダを追加する必要がありますか?どうやって? – mneri

0

を存在するフォルダのパスを与える必要があります'/'の後に続く名前の部分です。

そうでない場合、絶対名は次の形式のものである: パッケージ名/名パッケージ名が「/」の代わりにこのオブジェクトのパッケージ名で

「」 ( '\ u002e')。

関連する問題