質問

私は現在、友人に瓶として送る必要があるプログラムを書いています。プログラムには、プログラムを適切に動作させるためにロードする必要がある画像があり、1つの瓶にすべてを含める必要があります。現在、実行可能な瓶からは機能しません。ただし、NetBeansで動作します。

これが私が使用しているコードです:

私が使用している画像をロードするには:

protected ImageIcon createImageIcon(String path, String description)
{
 java.net.URL imgURL = getClass().getClassLoader().getResource(path);
 if (imgURL != null)
 {
     return new ImageIcon(Toolkit.getDefaultToolkit()
                  .getImage(imgURL),description);
 }
 else
 {
     System.err.println("Couldn't find file: " + path);
     return null;
 }
}

URLのために、私も試しました

 getClass().getResource(path)

画像が作成されることになっている行は次のとおりです。

this.img =createImageIcon(File.separator+"."+File.separator
           +"resources"+File.separator+"tiles"+File.separator+"tile.png","tile");

私のJARファイルは、クラスファイルとリソースフォルダーがその上部レベルの両方に含まれるフォルダーを使用してセットアップされています。

これを解決する方法を探していましたが、うまくいくものは見つかりません。

ありがとう。

役に立ちましたか?

解決

URLは評価します "/./resources/tiles/tile.png" 意味がありません(しかし多分 ClassLoader NetBeansから実行すると使用されます。エラーが許容されます。)
最初のドロップを試してみてください "/./". 。また、参照は必要ありません File.separator 文字列は相対URLとして扱われ、フォワードスラッシュは常に有効です。

他のヒント

使用する代わりに /./resources/back_img.png, 、 使用する resources/back_img.pngClassLoader.
例があります:

    String path = "resources/back_img.png";
    ClassLoader cl = ImageHandler.class.getClassLoader();
    URL imgURL = cl.getResource(path);
    //URL imgURL = ImageHandler.class.getResource(path);

    if (imgURL != null) {
        ImageIcon icon = new ImageIcon(imgURL, description);
        Image img = icon.getImage();
        Image sizedImg = img.getScaledInstance(width, height, Image.SCALE_DEFAULT);
        return new ImageIcon(sizedImg);
    } else {
        System.err.println("Couldn't find file: " + path);
        return null;
    }

それ以外のものにもかかわらず、あなたのコードには、失敗するという不快なプロパティがあります。

ようなものを試してみてください

URL x = get class.getclassloader.getresource(...)
If x == null
   Throw new defect "expected ... But it wasn't there"

フォーマットで申し訳ありませんが、iPadはそれを正しく行うのが難しすぎます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top