開発中の GUI に画像リソースを表示しようとしていますが、表示するのに苦労しています。java-swing-displaying-images-from-within-a-jarやimages-will-not-work-in-a-jar-fileなどのリソースのロードに関する他の質問に遭遇しましたが、それらは機能していません私のため。
私の問題は最初のリンクと同じように見えます.Eclipseから実行すると画像が表示され、Jarsを使用してコマンドラインから実行すると画像が表示されません. ただし、これらの質問に対する解決策では、画像が表示されません。
リソースを取得するためのコードは次のとおりです。
public class R {
public static final String resourcePackage = "path/to/image/package";
/**
* Returns the resource string that refers to the <code>resource</code> file
* in the <code>path.to.image.package.png</code> package.
*
* @param resource
* the file in the <code>png</code> package
* @return the full resource string
*/
public static String png(String resource) {
return String.format("%s/png/%s", resourcePackage, resource);
}
public static ResizableIcon resizableIcon(String resource) {
return ImageWrapperResizableIcon.getIcon(R.class.getClassLoader()
.getResourceAsStream(resource), new Dimension(48, 48));
}
}
GUIを生成するときに呼び出します
JCommandButton connect = new JCommandButton(i18ln.getString("ports"),
R.resizableIcon(R.png("serial-port-32x32.png")));
R.class.getClassLoader().getResourceAsStream
print ステートメントは、 のインスタンスを返すため、リソースが見つかったことを示しますsun.net.www.protocol.jar.JarURLConnection$JarURLInputStream
。
私は困惑しています。私はこれを理解しようと何時間も費やしましたが、助けが必要です。何か案は?
参考までに:関係ないと思いますが、GUI にFlamingoを使用しています。
編集:ステファンのリクエストごと
ソース/ 主要/ ジャバ/ com.company.project (パッケージ) R.java MyGui.java 資力/ com.company.project (パッケージ) .png (パッケージ) シリアルポート-32x32.png (その他の画像) .i18ln (パッケージ) MyGui.properties
より多くのコードについては、この質問に非常に役立つ他に何を提供できるかわかりません。リソースを取得するためのすべてのコードと、そのコードの使用方法は上記で提供されています。あなたが探していた特定の何かがありましたか?
アップデート:
Eclipse を使用して Jar を作成し、コマンド ラインから実行すると、イメージ リソースが正しく表示されます。Gradle を使用して Jar を作成すると、画像が表示されません。そのため、Gradle Jar ではなく Eclipse Jar を介して画像リソースに適切にアクセスできるようにする Jar を生成するときに、別の方法で行われていることがあります。この問題に関して、Gradle フォーラムで質問を開きました。