web-dev-qa-db-ja.com

Java:getResourceを使用してロードするファイルシステム上のファイルはどこに配置しますか?(ImageIconの画像など)

ファイルはgetClass()。getResource(filename)が見つけられる場所にある必要があることは知っていますが、それがどこにあるかわかりません。

ファイルシステム自体のどこにファイルを置くか、そしてEclipseの機能を使用してリソースをセットアップする方法の両方に興味があります。

50
Andrew Larned

Eclipseの場合、通常必要なことは、ソースコードディレクトリ内のどこかにフォルダーを設定することだけです。たとえば、ソースを含むディレクトリが/srcである場合、/src/resourcesフォルダーを作成して画像/ファイルを配置できます。次に、クラス内でgetResource("/resources/image.png")を実行して取得しますそれ。

必要に応じて、アクセスしようとするクラスと同じフォルダー/パッケージ内に画像/ファイルを配置することもできます(例:必要なcom.mycompanyクラスとともにcom.mycompany.Fooパッケージにimage.pngを配置しますアクセスしてgetResource("image.png"))を呼び出しますが、画像やその他のファイルなどのリソースをクラスフォルダーの外の独自の特別なディレクトリに保持する方が簡単であることがわかりました。

Eclipseでは、ビルドを行うたびに、このリソースディレクトリ内のファイルが、コンパイル済みクラスとともにビルドディレクトリにコピーされます。

Eclipseで(ほとんどの人がそうするように)「自動的にビルド」をオンにしている場合、Eclipseの外部で変更される(つまり、画像編集ツールを使用して画像を編集する)リソースはIDEは常にこの変更を検出するとは限りません。通常、プロジェクトフォルダーで更新を行うと、これらの状況でビルド内のファイルが更新されます。

62
BCunningham

それらをクラスと一緒にsrcフォルダーに配置するか、目的のために新しいソースフォルダーを作成することができます(通常はresourcesと呼ばれます)。ただし、コードから同じ場所に配置します。

次に、getResource("/com/x/y/foo.png")を使用してそれらを取得します。

7
jodonnell