以下代碼在Eclipse中正常工作(包括圖像處理可能性)。但是,當作爲Runnable JAR文件導出並雙擊.JAR時,沒有任何反應。如果我註釋掉代碼的圖像部分,則.JAR可以很好地作爲導出並且框架生成。所以看起來圖像的獲取導致.JAR失敗。Java Swing:包含圖像時可運行的JAR文件不起作用
我得到了坐在'C:\ Users \ sean \ workspace \ myApps \ bin \ testing'中的strawberry.jpg文件。你能否告訴我這個問題是否與我的代碼一樣?
(代碼這裏先修改:Java Swing: unable to load image using getResource)
package testing;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.io.IOException;
import java.io.InputStream;
public class IconTest {
public static void main(String[] arguments) throws IOException {
JFrame frame1 = new JFrame();
frame1.setTitle("Frame1");
frame1.setSize(500, 500);
frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
FlowLayout flo = new FlowLayout();
frame1.setLayout(flo);
//POSSIBILITY 1 TO HANDLE IMAGE
InputStream resourceAsStream = IconTest.class.getResourceAsStream("strawberry.jpg");
Image image = ImageIO.read(resourceAsStream);
JLabel label1 = new JLabel(new ImageIcon(image));
//POSSIBILITY 2 TO HANDLE IMAGE
/* java.net.URL url= IconTest.class.getResource("strawberry.jpg");
BufferedImage watermarkImage = ImageIO.read(url);
JLabel label1 = new JLabel(new ImageIcon(watermarkImage));*/
frame1.add(label1);
frame1.setVisible(true);
}
}
如果您在不同的系統中執行,請提取jar並檢查是否包含圖像。 – Shriram
一種可能性是你可以在將'JLabel'作爲'ImageIcon'包含在它之前檢查'if(image!= null)',如果它爲null,你可以用一些替代文本創建'JLabel' ... –
Aren' t應用程序需要存儲在資源目錄中的資源?這可能需要在Eclipse中進行配置,而不是其用戶,但這種情況始終發生 – MadProgrammer