2011-02-02 6 views
2

私は表示用に外部画像を必要とする小さなプロジェクトに取り組んできました。私はEclipseの使い方に精通しているわけではありません。完成したプロジェクトをエクスポートして初めて他の人と共有できるようにしています。今、私のイメージが表示される唯一の方法は、ハードドライブに特定のフォルダを割り当て、コード内のイメージパスをそれに移動させることです。画像を別のアーカイブフォルダに送る必要はありません。 。私は自分のコードがそのパッケージ内のイメージを参照するようにするために必要なことを学ぶことに興味があるので、外部のフォルダなしで動作します。 私はEclipse内でいくつかの種類のパッケージシステムについて読んだことがありますが、これまでどのように使用するかはわかりませんでした。いくつかの説明を使用することができます!私は自分の2セントを与えて喜んで誰にも事前にEclipseでJARを使って画像をエクスポートする(Java)

感謝。

答えて

2

彼らはjarファイル内にある場合は、クラスパスリソースとしてそれらをロードする必要があります。参照:。。のgetClass()のgetClassLoader()getResourceAsStream(...)

+0

さて、最初の問題は、Eclipseを使用してJARに取り込む方法がわからないことです。あなたは私にそれを説明することができますか? – Chiubaka

+0

クラスパスに配置します。だから、Eclipseのソースフォルダを見つけてそれを入れてください。またはそれらのフォルダがあれば、右クリックして[追加]をクリックしてパスを構築してください – Steven

1

は使用のgetResource()画像を読み込むために:

ImageIcon qmarkIcon = new ImageIcon(getClass().getResource("images/mark.gif")); 
6

ジャスト」を選択し、その後、画像はEclipseのプロジェクトにフォルダをドラッグしますEclipseのバージョンに応じて「新しいフォルダをコピーする」または「ファイルとフォルダをコピーする」を選択し、イメージフォルダ(Eclipseの場合)を右クリックし、パスを「ソースフォルダとして使用」をビルドします。私はこの回答で有用であることが分かっているだろう

+0

@dannyありがとうございます。ただし、これを行うと、ボトムレベルのフォルダーが削除されます。例えば、私は 'img'というフォルダを持っていて、すべての画像を保存していました。私が「ソースフォルダとして使う」とすると、' img'ディレクトリのすべての内容が私の 'jar 'ファイル。これを回避するために、 'lnk'という名前のフォルダを作成し、' lnk'フォルダ内の 'img'フォルダへのシンボリックリンクを作成しました(Windowsでは' JUNCTION'を使って実行できます)。さて、 'lnk'を" source folder "として追加すると、画像は' jar'の 'img'フォルダにあります。 –

10

何かは以下の通りです:あなたは、ソースコードと同じ日食フォルダ(以下サブフォルダ)にあなたのイメージ/ファイルを置くことを確認してください。私はeclipseを使用して "images_ignored"というフォルダを作成し、それをビルドパスに追加しましたが、(実行可能なJARを作成するときは)私のJARファイルには含められませんでした。

Eclipse screenshot showing were to put images

+2

これはちょっとだけ慣習を破ると思います。 '.java'ソースファイル(および他の実際のソースコードファイル)のみが' src'ディレクトリにあると便利です。私は@ dannyの答えは、希望のフォルダを右クリックし、パスを構築するためには、 "ソースフォルダとして使用"で最も十分だと思います。この方法で簡単にリソース(画像、サウンド、ソース、設定など)を分けることができます –

+0

私は特に@ MichaelPlautzのコメントにアップサインしました。 .javaファイルが画像に追加されないようにしてください。 – wheresmycookie

-1

あなたはjarファイルにそれをエクスポートしたときにだけに覚えimg/myImage.gifのようなパスで参照に画像をない、どちらかの日食の画像を取得することができ、パスを構築するためのフォルダを追加した場合ただmyImage.gif

0

あなたはJDK 1.7またはJDK 1.8を使用している場合は、NIO.2のAPIを使用する場合があります。あなたがjava.nio.file.FileSystemを返すメソッドにこのコードを入力した場合

for (FileSystemProvider provider : FileSystemProvider.installedProviders()) { 
    if ("jar".equals(provider.getScheme())) 
     return provider.newFileSystem((new File(Start.class 
       .getProtectionDomain().getCodeSource().getLocation().toURI())) 
       .toPath(), new HashMap<String, Object>()); 
} 

は、あなたがJARファイルのファイルシステムを取得するメソッドを呼び出すことができます。

JARファイル内のファイルにアクセスするためのパスを取得するには、あなたは、あなたがしたいことがファイルを読み取ることができます以下の方法を、使用することができます。

fileSystem.getPath("/images/image.gif") 

あなたはのtry/catchのIOExceptionとメソッドの呼び出しを囲み、ファイルシステムは、以下のオブジェクトに割り当てることを確認し、Eclipseでこれを実行できるようにしたい場合 。

new File(Start.class.getProtectionDomain().getCodeSource().getLocation().toURI()) 
     .toPath().toString(); 

これにより、プログラムがJARファイルに圧縮されているかどうかにかかわらず、プログラムを実行できます。


これは非常に強力なAPIなので、NIO.2を使用することをお勧めします。