[英]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();
}
有什么建議么?
對我來說很好。 檢查您可能有什么不同。
腳步:
檔案結構
碼
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中運行也很好
腳步:
文件結構(通知資源看起來像一個普通文件夾)
我們現在要做的就是將資源放在構建路徑上。 這是將所有內容放入類路徑中的文件夾(不包括文件夾本身)中
右鍵單擊該項目,然后轉到[構建路徑]→[配置構建路徑]
從對話框的[源]選項卡中,選擇[添加文件夾],然后在新對話框中,選擇[資源]文件夾
現在資源文件夾的內容在構建路徑中(注意現在文件夾中的小包
新代碼不再使用資源前綴作為路徑
URL url = Main.class.getResource("/stackoverflow.png");
從上面與第3步和第4步相同,並獲利!
更新
通常,一旦您運行了該類(即右鍵單擊該類並以Java應用程序身份運行),便會設置運行配置。 您需要將其設置為清單中的啟動點。 但是,這是手動操作的方法。
腳步:
[右鍵單擊項目]→[屬性]→[運行/調試設置]
您可以看到我已經有了一個運行配置(從簡單運行該類隱式設置)。 但是要創建一個新的,請選擇[New]→[Java Application]
為運行配置創建一個名稱,然后瀏覽或鍵入一個主啟動類。 就我而言,它是com.stackoverflow.test.Main
類
現在,如上例所示導出時,選擇運行配置
像上面一樣運行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
提取的罐子:
要從Eclipse創建可運行的JAR文件,我們可以參考文章“在Eclipse中創建可運行的Jar(或其他IDE或手動創建):”( https://www.cefns.nau.edu/~edo/Classes /CS477_WWW/Docs/RunnableJarsinEclipse.html ),它提到我們需要做四件事:
但是對於上述文章的示例代碼中的圖像文件,它僅創建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.