将项目导出到jar文件时,如何包含我的图标

我开发了一个桌面应用程序。 问题是当我将应用程序导出到jar文件时,应用程序中没有显示图标。 当我从Eclipse运行它时,所有图标都显示在那里。

我项目的一个例子:

package net.ebank.gui; import java.awt.*; import javax.swing.*; public class EBank extends JFrame { protected Start s; public EBank() { setTitle("Welcome To EBank"); setBackground(Color.white); Image img = new ImageIcon("../EBank/res/bank.jpg").getImage(); this.setIconImage(img); /*"com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel" "com.sun.java.swing.plaf.windows.WindowsLookAndFeel"*/ setVisible(false); setSize(1350,700); setDefaultCloseOperation(this.EXIT_ON_CLOSE); try { UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel"); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (InstantiationException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (UnsupportedLookAndFeelException e) { // TODO Auto-generated catch block e.printStackTrace(); } s= new Start(this); s.setLocation(getWidth()/2, getHeight()/4); } public static void main(String[] args){ new EBank(); } } 

使用Class#getResource()而不是将相对路径传递给ImageIcon构造函数。

还要确保图像文件实际上是生成的JAR的一部分。

为了使其工作,请按照下列步骤操作:

  • 在项目浏览器树中右键单击您的项目。
  • 转到新建 – >源文件夹,然后将任何名称提供给源文件夹。
  • 现在手动将您的东西添加到您创建的源文件夹中,就像您要添加图像然后创建一个新文件夹一样,通过文件系统手动访问此源文件夹。
  • 将此新文件夹命名为图像,并将图像复制到此文件夹。
  • 现在返回Eclipse IDE并从Project Explorer中刷新项目,右键单击您的项目,此处您可以在刷新后立即查看添加的内容。
  • 现在,为了访问,比如任何图像,你将使用。

     getClass().getResource("/images/yourImageName.extension"); 

这将返回一个URL对象。 在这种情况下,请记住第一个正斜杠 ,因为在更简单的条件下,可以借助此访问源文件夹中的任何内容。 现在,当您运行项目时,此源文件夹的内容将自动添加到bin文件夹中,当您创建Runnable Jar时 ,可以按原样访问源文件夹中的内容。

在这个链接上,我试图用图像解释, 如何将图像添加到Eclipse项目中

您可以修复JAR文件的布局,这可能只是像在Eclipse中那样相应地排列文件夹,或者像Matt Ball所说的那样,使用Class#getResourceClass#getResourceAsStream