簡體   English   中英

Java Swing:包含圖像時,可運行的JAR文件不起作用

[英]Java Swing: Runnable JAR file does not work when including images

下面的代碼在Eclipse中可以正常工作(兩種圖像處理方式都可以)。 但是,當導出為可運行的JAR文件並雙擊.JAR時,沒有任何反應。 如果我注釋掉代碼的圖像部分,則.JAR在導出時運行良好,並且會構建框架。 因此,圖像的獲取似乎導致.JAR失敗。

我已經將Strawberry.jpg文件放在“ C:\\ Users \\ sean \\ workspace \\ myApps \\ bin \\ testing”中,請問問題出在我的代碼上嗎?

(代碼首先在這里修改: Java Swing:無法使用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);
}

}

處理圖像的可能性3:

您可以檢查正在獲取的資源是否存在。 找不到資源,然后您還可以使用替代文本創建JLabel ...

JLabel label1 ;
URL imageUrl = IconTest.class.getClassLoader().getResource("strawberry.jpg");
if ( imageUrl != null ) {
    label1 = new JLabel(new ImageIcon(imageUrl));
} else {
    label1 = new JLabel("Alternative text");
}

將圖像放在您具有源文件的位置,因為它指向源目錄

InputStream resourceAsStream = IconTest.class.getResourceAsStream("strawberry.jpg");

然后生成可運行的jar文件,然后右鍵單擊該jar並給出以Java平台二進制文件的身份運行

遵循Maven標准目錄布局可能會有所幫助:

布局

InputStream resourceAsStream = IconTest.class.getResourceAsStream("/strawberry.jpg")

它應從“ /”開始。 還要檢查罐子上是否確實有圖像。 只需打開包裝並檢查是否已實際添加圖像。

此處提供的有關解決問題的指南很有幫助-謝謝大家。 我測試了導出的JAR的內容; 我使用Kishan建議的診斷代碼來確定我的代碼是否可以“看到”圖像。 我相信,如果我在文件系統中而不是Eclipse導入功能中移動圖像,這可能與Eclipse工作/刷新的方式有關。 最后,為了使其正常工作,我進行了以下更改:我創建了一個新項目和兩個子包-一個用於“資源”,另一個用於我的代碼類。 然后,我右鍵單擊>導入Eclipse中的資源包以獲取圖像。

我的代碼中唯一需要更改的是.... getResourceAsStream(“ / resources / strawberry.jpg”);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM