0

複数の画像を使用するアプリケーションを作成しました。アプリを実行する方法は2つあります。-アイデアを押し込んでください
- ファットjarファイルを作成してコンソールから実行しますrun
java -jar app.jar

から実行したい場合Ideaは、以下を使用する必要があります。

BufferedImage backgroundImage = ImageIO.read(new File("res/field.png"));

それ以外の

BufferedImage backgroundImage = ImageIO.read(getClass().getClassLoader().getResource("res/field.png"));
<-それは私がjarファイルの場合に使用しなければならないものです

なんで?ほぼ同じだと思いました。私の場合、普遍的な方法はありますか?

4

2 に答える 2

2

私はいつも使用します:

BufferedImage backgroundImage = ImageIO.read(getClass().getResource("res/field.png"));

これは、IDE と jar 内の両方から機能します。.getResource(...) は、jar:// または file:// のいずれかの URL を返します。

パスは / で始まるか (この場合はパッケージ ルートからの相対パス)、またはクラス パッケージからの相対パスであることに注意してください。クラスが com.example.Test の場合/res/は、フォルダー com/example/ を参照します。テスト/解像度/。

静的バージョン - YourClassName.class.getResource(...) を使用することもできます。これにより、パッケージ ツリーの他の「ブランチ」に簡単にアクセスできます (別のブランチにあるクラスからの参照を使用できます)。

于 2012-11-05T11:35:09.607 に答える
1

ではjava.io、相対パスは現在の作業ディレクトリに依存します。getResource を使用すると、そのリソースがclasspath.

于 2012-11-05T11:31:29.437 に答える