EclipseからエクスポートされたJARファイルを実行すると、イメージがロードされません。
リソースクラスパッケージに画像があります。画像ソースフォルダーも試してみましたが、うまくいきませんでした。
Eclipseからロードすると完璧に機能します。画像はエクスポートされたJARファイル内にあるため、正常にエクスポートされます。
私はもう試した:
label.setIcon(new ImageIcon(MainFrame.class.getResource("/resources/header.jpg")));
私も試しました:
URL url = getClass().getResource("/resources/header.jpg");
Image image = Toolkit.getDefaultToolkit().getImage(url);
label.setIcon(new ImageIcon(image));
そして:
try
{
label.setIcon(new ImageIcon(ImageIO.read(getClass().getResource("/resources/header.jpg"))));
}
catch (IOException e1)
{
e1.printStackTrace();
}
助言がありますか?
問題は、Windowsプロジェクトにこのプロジェクトがあったことです...「!」がありました。その中...(DeNitE!->は私のWindowsプロファイルの名前でした)
(!なしで)DeNitEに変更するとすぐにうまくいきました...
私には問題ありません。異なる可能性のあるものを確認してください。
手順:
ファイル構造
コード
package com.stackoverflow.test;
import Java.net.URL;
import javax.swing.*; // Wild carded for brevity.
// Actual code imports single classes
public class Main {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable(){
public void run() {
URL url = Main.class.getResource(
"/resources/stackoverflow.png");
ImageIcon icon = new ImageIcon(url);
JFrame frame = new JFrame();
frame.add(new JLabel(icon));
frame.pack();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
}
[プロジェクトを右クリック]→[エクスポート]→[実行可能なJarファイル]→[起動設定のセットアップ]
利益
参考までに、Eclipseでも同じセットアップが正常に実行されます
手順:
ファイル構造(通知リソースはプレーンフォルダーのように見える)
今やらなければならないことは、リソースをビルドパスに配置することです。これにより、クラスパス上のフォルダー(フォルダー自体を除く)にすべてが配置されます。
プロジェクトを右クリックして、[ビルドパス]→[ビルドパスの構成]に移動します。
ダイアログの[ソース]タブから[フォルダーの追加]を選択し、新しいダイアログで[リソース]フォルダーを選択します
リソースフォルダーのcontentsはビルドパスにあります(フォルダー内の小さなパッケージに注意してください
新しいコードは、パスにリソースプレフィックスを使用しなくなりました
URL url = Main.class.getResource("/stackoverflow.png");
上記のステップ3および4と同じで、利益があります!
[〜#〜] update [〜#〜]
通常、クラスを実行すると(つまり、クラスを右クリックしてJava Application)として実行)、実行構成がセットアップされます。これは、マニフェストの起動ポイントとして設定する必要があります。 。しかし、手動で行う方法は次のとおりです。
手順:
[プロジェクトを右クリック]→[プロパティ]→[実行/デバッグ設定]
実行構成(クラスを実行するだけで暗黙的に設定される)が既にあることがわかります。ただし、新しいものを作成するには、[新規]→[Javaアプリケーション]を選択します
実行構成の名前を作成し、メインの起動クラスを参照または入力します。私の場合、com.stackoverflow.test.Main
クラス
上記の例のようにエクスポートするとき、実行構成を選択します
上記のようにjarを実行します。
[〜#〜] edit [〜#〜]
マニフェスト:
Manifest-Version: 1.0
Rsrc-Class-Path: ./
Class-Path: .
Rsrc-Main-Class: com.stackoverflow.test.Main
Main-Class: org.Eclipse.jdt.internal.jarinjarloader.JarRsrcLoader
抽出されたjar:
2つの簡単なステップ:
1-フォルダーをビルドパスに追加します。
2-これを使用:
InputStream url = this.getClass().getResourceAsStream("/load04.gif");
myImageView.setImage(new Image(url));
同じ問題があります。これを使用できます。
Image Icon= new ImageIcon(new WE4().getClass().getResource("IC.jpg"))
ここで、WE4はクラスコンストラクター名です。それが役に立てば幸い。
Eclipseから実行可能なJARファイルを作成するには、「Eclipse(または他のIDE ...または手動で)で実行可能なJARを作成する」という記事を参照してください:( https://www.cefns.nau.edu/ 〜edo/Classes/CS477_WWW/Docs/RunnableJarsinEclipse.html )、次の4つのことを行う必要があると述べました
ただし、上記の記事のサンプルコードの画像ファイルでは、ImageIconのみが作成され、SWT Imageは作成されません。URLからSWT Imageを取得する方法やImageIconをSWT Imageに変換する方法については、インターネットで多くの質問がありますが、以下は、URLからSWTイメージを取得するためのコード例です。
Image imgSWT=null; // Image class is the SWT Image class
ImageDescriptor imgDesc=null;
Java.net.URL imgURL = YourClassName.class.getResource("path/image_filename");
if (imgURL != null) {
imgDesc = ImageDescriptor.createFromURL(imgURL);
imgSWT = imgDesc.createImage();
}
別の回避策は、リソースファイル(.jarファイル)を同じ場所に配置すれば機能するはずです。唯一の欠点は、常にjarファイルを含むリソースが必要になることです。
それが問題でない場合は、この方法で行うことができます。
ファイルをjarに入れる必要がない限り、これがおそらく最も簡単な方法です。
header = ImageIO.read(new File("./resources/header.jpeg"));
ヘッダーはImage/BufferedImageである必要があります。これは、実行可能jarが含まれるフォルダーに移動し、resourcesというフォルダーを探します。 http://i.stack.imgur.com/x8xtO.png