2016-05-03 14 views
-1

異なるリソースから多くの回答を試みましたが、コードがまだ機能しません。 (と私は本当にそれが動作すると思われる方法を理解していない)Javaを使用したjarファイルのバッファイメージ

私のJavaファイルを含むフォルダはデスクトップ/コード の下にあり、私はすべての画像のフォルダを含むpackage.nameという名前のパッケージを持っている私はどんな役に立つヒントだから

をいただければ幸い、私はそれのjarファイルにする必要がありますが、私のプログラムは、常にファイルを読み取ることができないと言う...ロードするために

をしようとしています、「画像」があるフォルダです私が必要とするすべての画像

これは私のコードの画像の描画です:

g2.drawImage(getPicture("/package.name/image/"+1+".png"), x, y, 200, 200, null); 

と私は画像をバッファリングするための方法があります:私はターミナルでそれを実行しようとするたびに

public BufferedImage getPicture(String filename) { 
     try { 
      File fp = new File(filename); 
      BufferedImage pic = ImageIO.read(getClass().getResourceAsStream(filename));   
      return pic; 
     } 
     catch (Exception e) { 
      JOptionPane.showMessageDialog(null, "Unable to read file!", "File Error", JOptionPane.ERROR_MESSAGE); 
      return null; 
     } 
    } 

、私のコードはちょうど私がしようとはそれをコンパイルしてきた、メッセージダイアログボックスを出力しますjarファイルとそれはうまく動作しません。

+0

を使用する必要があります*例外クラスとメッセージは何*ですか? –

+0

@BrianAgnew例外は次のとおりです。java.lang.IllegalArgumentException:input == null! –

答えて

0

あなたはNullPointerExceptionの権利を得ていますか?

あなたはドットなしであなたのイメージをロードする必要があります(私の水晶玉は、あなたが言う).だけそのような/スラッシュ:

g2.drawImage(getPicture("/your/package/name/image/"+1+".png"), x, y, 200, 200, null);

編集:あなたがいないNPE IllegalArgumentExceptionを取得している - この答えはまだ有効です原因は同じです - nullgetResourcesAsStream()から返されます。

あなたimageディレクトリがコンテキストのルートにある場合、それはdefaultパッケージであり、そしてあなたが/your/package/nameをOMMITのみimage/1.png例えば

+0

ドットはフォルダ名の一部です。/package.nameを削除する必要がありますか? –

+0

申し訳ありませんが、コンテキストのルートはどういう意味ですか? –

+0

'my.app.main'のようなパッケージをお持ちの場合、ディレクトリは' my/app/main'のようになります。ルートコンテキストはアプリケーションの最上位ディレクトリですので、 'my'ディレクトリを含むディレクトリになります; – Antoniossss

関連する問題