私のJARファイルは画像をロードしません
-
10-10-2019 - |
質問
私は現在、友人に瓶として送る必要があるプログラムを書いています。プログラムには、プログラムを適切に動作させるためにロードする必要がある画像があり、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.png
と ClassLoader
.
例があります:
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はそれを正しく行うのが難しすぎます。
所属していません StackOverflow