1

JARを作成するときはいつでも、JARはその中のフォルダーを読み取らず、JARのフォルダー内のフォルダーのみを読み取ります。OK、それはあまり説明的ではありませんでした。だから、これは私がサポートするために編集した写真です。ここに画像の説明を入力

私はあなたが今考えを理解することを願っています. では、どうすればこれを修正できますか?私はすでに eclipse のビルド パスの res と stats の一部を持っています。

リソースを読み取るために使用するコード:

Image player; player = new ImageIcon("res/player.png").getImage();

4

1 に答える 1

5

を使用ImageIconして渡す場合String、パラメータが を参照することが期待されますFile

JavaDocsから

指定されたファイルから ImageIcon を作成します。...指定された文字列は、ファイル名またはファイルパスにすることができます

ファイルと「リソース」は別物です。

代わりに、もっと似たものを使ってみてください...

new ImageIcon(getClass().getResource("res/player.png"));

それがディレクトリres/player.pngの横のjar内にあると仮定します。res

リソースをロードしようとしているクラスとの関係とリソースの場所によっては、使用する必要がある場合があります

new ImageIcon(getClass().getResource("/res/player.png"));

代わりは...

更新しました

EJP が指摘しているように、いくつかの推奨事項では、リソースが見つからない可能性に備えておく必要があります。

URL url = getClass().getResource("/res/player.png");
ImageIcon img = null;
if (url != null) {
    img = new ImageIcon(url);
}
// Deal with null result...

ImageIO.readそして、画像を読むために使用する必要があります。より多くの画像フォーマットをサポートする (そして将来的にはより多くの画像フォーマットをサポートできる) という事実とは別に、返す前に画像をロードし、画像をIOException読み取れない場合は ...をスローします。

URL url = getClass().getResource("/res/player.png");
ImageIcon icon = null;
if (url != null) {
    try {
        BufferedImage img = ImageIO.read(url);
        icon = new ImageIcon(img);
    } catch (IOException exp) {
        // handle the exception...
        exp.printStackTrace();
    }
}
// Deal with null result...
于 2013-11-14T23:53:46.023 に答える