2017-05-02 4 views
0

私は次のような構造を持っている私のプロジェクトの実行可能JARにエクスポートしようとしています:プロジェクトのソースフォルダと他のすべてのフォルダを含む実行可能なJARをエクスポートしますか?

Project 
    | 
    |---Source folder 
    |   | 
    |   | 
    |  .java files 
    | 
    | 
    |---Image folder 
      | 
      | 
     .png files 

.png画像は、私がEclipseでプログラムを実行すると正常に動作しますImageIO.read(new File("ImageFolder/image.png"));を使用して.javaファイル内で読み込まれますが、私は実行可能JARにエクスポートする場合、私は、スタックトレースに次の例外を取得:ここ

javax.imageio.IIOException: Can't read input file!                
     at javax.imageio.ImageIO.read(Unknown Source) 

は、Eclipseでの私のプロジェクトのスクリーンショットです:

enter image description here

new File("cardImages/10C.png")を読むことができるように、cardImagesフォルダをJARに含めるにはどうすればよいですか?

+0

cardImagesをソースフォルダにしようとしましたか? – Ray

+0

ディレクトリにエクスポートするには、ストリームを使用して画像ファイルを読み込み、 ** getClass()。getResourceAsStream( 'cardmages/imagename')**。 – subash

+0

@Rayこれはとにかく一時的な修正として機能しましたが、以下の答えは間違いなくそれを行う正しい方法です – KOB

答えて

0
  • 右=> "パスを構築する" を選択し、プロジェクト
  • をクリックして "設定がビルドパス..."
  • 新しい開いたウィンドウで "cardImages" フォルダをチェック

それは、あなたの瓶の中で抽出する必要があります。

ただ、先端、資源はディレクトリと

InputStream is = ClassLoader.getSystemResourceAsStream("resources/sample.txt"); 
+0

そして、画像を書くのはどうですか?私のプログラムは 'cardImages'フォルダからイメージをロードしています。ロードしたイメージを使って新しいイメージを作成し、新しいイメージを' cardImages'に書き戻します。 'ClassLoader.getSystemResourceAsStream'は、InputStream – KOB

+0

jarfileの中にファイルを書き込むにはハックが必要ですが、Runtimeでjarを変更することはお勧めできません。多くの問題が発生する可能性があります。ファイルを書く必要がある場合は、jarと同じディレクトリにフォルダを作成し、そこにファイルを管理することがベストプラクティスです(設定ファイルやcardImageを置くなど) これは次のようにして実行できます: C:User/adom /ドキュメント/ jarName.jar!/ファイル名.txt "!"それがjarfileであると仮定する文字。 –

0

輸出の使用を好むため、ストリームを使用してgetClass().getResourceAsStream('cardmages/imagename');

正常に実行可能なjarファイルを画像ファイルを読み込むと、ファイル操作は、そのパスにrealtiveありますそのことが発覚した。元

c:/myFolder>yourjar.jar 

ため はその後 から読み取るしようとしているファイル、c:/myFolder/cardimages/imagename.

ファイルは、ファイルシステムからファイルにアクセスするために使用されるクラスです。瓶の中からではありません。

+0

だから私は 'ImageIO.read(getClass()。getResourceAsStream( 'cardImages/10C。' – KOB

+0

はい、そうだと思います – subash

+0

私のプログラムは同じフォルダに画像を書き込む必要がありますが、これはどうやって同様のやり方でできますか? – KOB