簡體   English   中英

Eclipse導出的Runnable JAR不顯示圖像

[英]Eclipse exported Runnable JAR not showing images

運行從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();
}

有什么建議么?

對我來說很好。 檢查您可能有什么不同。

實施例1:( SRC資源)

腳步:

  1. 檔案結構

    在此處輸入圖片說明

  2.  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); } }); } } 
  3. [右鍵單擊項目]→[導出]→[可運行的Jar文件]→[設置啟動配置]

    在此處輸入圖片說明

  4. 利潤

    在此處輸入圖片說明

僅供參考,相同的設置在Eclipse中運行也很好


示例2 :(資源不在 src中-而是在項目中)

腳步:

  1. 文件結構(通知資源看起來像一個普通文件夾)

    在此處輸入圖片說明

  2. 我們現在要做的就是將資源放在構建路徑上。 這是將所有內容放入類路徑中的文件夾(不包括文件夾本身)中

    • 右鍵單擊該項目,然后轉到[構建路徑]→[配置構建路徑]

      在此處輸入圖片說明

    • 從對話框的[源]選項卡中,選擇[添加文件夾],然后在新對話框中,選擇[資源]文件夾

      在此處輸入圖片說明

    • 現在資源文件夾的內容在構建路徑中(注意現在文件夾中的小包

      在此處輸入圖片說明

  3. 新代碼不再使用資源前綴作為路徑

     URL url = Main.class.getResource("/stackoverflow.png"); 
  4. 從上面與第3步和第4步相同,並獲利!


更新

設置啟動配置

通常,一旦您運行了該類(即右鍵單擊該類並以Java應用程序身份運行),便會設置運行配置。 您需要將其設置為清單中的啟動點。 但是,這是手動操作的方法。

腳步:

  1. [右鍵單擊項目]→[屬性]→[運行/調試設置]

    在此處輸入圖片說明 您可以看到我已經有了一個運行配置(從簡單運行該類隱式設置)。 但是要創建一個新的,請選擇[New]→[Java Application]

  2. 為運行配置創建一個名稱,然后瀏覽或鍵入一個主啟動類。 就我而言,它是com.stackoverflow.test.Main

    在此處輸入圖片說明

  3. 現在,如上例所示導出時,選擇運行配置

    在此處輸入圖片說明

  4. 像上面一樣運行jar。


編輯

檢查結果

表現:

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中

將所需的庫提取到生成的jar中

在“設置啟動”配置中對我有用。

提取所需的庫按鈕

要從Eclipse創建可運行的JAR文件,我們可以參考文章“在Eclipse中創建可運行的Jar(或其他IDE或手動創建):”( https://www.cefns.nau.edu/~edo/Classes /CS477_WWW/Docs/RunnableJarsinEclipse.html ),它提到我們需要做四件事:

  1. 確保為我們的代碼創建一個包,而不僅僅是在Eclipse中創建一個項目
  2. 在代碼的主包下為資源文件創建子包(子文件夾)(請注意,子包位於主包下,不僅在項目中)
  3. 從getResource()獲取所有文件引用(獲取URL引用)
  4. 在Eclipse中將文件導出為可運行的JAR(文件->導出...->選擇可運行的JAR文件->下一步-> ...)

但是對於上述文章的示例代碼中的圖像文件,它僅創建ImageIcon,而不創建SWT圖像,並且互聯網上存在許多有關如何從URL獲取SWT圖像或如何將ImageIcon轉換為SWT圖像的問題,以下是用於從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();
}

兩個簡單步驟:

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是我的類構造函數名稱。 希望能幫助到你。

問題是我的Windows配置文件中有這個項目……它帶有“!” 在其中...(DeNitE!->是我的Windows配置文件的名稱)

我將其更改為DeNitE(不帶!)后,它就可以正常工作...

除非必須將文件保存在jar中,否則這可能是最簡單的方法:

header = ImageIO.read(new File("./resources/header.jpeg"));

標頭必須是Image / BufferedImage。 這將轉到可運行jar所在的文件夾,並尋找一個名為resources的文件夾。 http://i.stack.imgur.com/x8xtO.png

另一個解決方法是,如果將資源文件(.jar文件)放在相同的位置,則它應該可以工作。 唯一的缺點是您必須始終將資源與jar文件一起使用。

如果那不是問題,您可以通過這種方式進行。

暫無
暫無

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

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