これは私を夢中にさせています。私はこれをグーグルで何時間も費やしましたが、この問題を抱えている他のケースを1つも見つけることができません。プログラムに必要なすべての画像を src フォルダーに入れましたが、プログラムを実行しても画像が描画されません。bin フォルダーを確認すると、適切にコピーされています。bin フォルダーにすべてのリソースがあっても、相対ファイルパスを使用すると、Eclipse はそれらを認識しません。コマンド プロンプトを開いて bin フォルダーに移動し、それを実行すると、すべての画像が描画され、コードは変更されません。相対ファイルパスで画像を使用するようにEclipseを取得するにはどうすればよいですか??
2 に答える
を使用してファイルにアクセスしようとするとnew File("some/relative/path")
、パスは常に Java アプリケーションが開始された場所からの相対パスになります。場所がわからない場合は、 を印刷して確認できますnew File(".").getAbsolutePath()
。Eclipse の場合、これは Project フォルダーになります。
アプリケーションのソース フォルダー内のファイルにアクセスする場合は、class.getResource("path")
またはを使用する必要がありますclass.getResourceAsStream("path")
。ここで、path は相対パス (のパッケージに対する相対パスclass
) または絶対パス (クラスパスに対する絶対パス) のいずれかです。
したがって、パッケージがfoo
あり、このパッケージ内に Java ファイルBar.java
とイメージがある場合、またはのいずれかblub.gif
を使用してイメージを取得できます-- 先頭に注意してください。Bar.class.getResource("blub.gif")
Bar.class.getResource("/foo/blub.gif")
/
を使用する以外new File(...)
に、これも機能し、クラスとリソースは Jar にパッケージ化されます。
Copy images
デフォルトでは、はその名前を指定するだけでを読み取り、root folder
それを相対パスと見なします。通常、eclipse で Java ファイルのコンパイル後にすべてを格納するために使用されるフォルダー。project
eclipse
file
project
Bin
class files
身に着けている場合は修正してください