编译时图像有问题

我一直在互联网上试图找出如何在编译成可运行的jar后显示图像图标。 我发现这个问题太晚了,我在eclipse之前多次运行我的程序并且每件事都有效,现在6个月后项目完成,我用eclipse编译我的程序,没有音频或图像工作。 在网上阅读,它说关于图像文件夹的位置应该在jar内,但我的不会放在那里?

我玩过图像文件夹在源文件夹中移动它,但它没有用。 我有一种感觉,它可能与资源的路径有关…但这只是猜测。

我已经构建了一个具有相同结果的简单程序…在eclipse中运行时有效,但在编译时则无效。 有人可以通过修改下面的代码向我展示一个例子。 提前致谢。

源代码:

package ImageIcon; import java.awt.BorderLayout; import java.awt.Color; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; public class Gui { public static JLabel c; public Gui(){ JFrame f = new JFrame(); JPanel p = new JPanel(); p.setBounds(0, 0, 120, 200); p.setBackground(Color.black); p.setLayout(null); JPanel bg = new JPanel(new BorderLayout()); bg.setBounds(50, 50, 15, 15); bg.setBackground(Color.white); ImageIcon a = new ImageIcon("images/success.jpg"); c = new JLabel(a); f.setSize(100, 200); f.setLayout(null); f.setLocationRelativeTo(null); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setVisible(true); f.add(p); p.add(bg); bg.add(c); } public static void main(String[] args) { new Gui(); } } 

在此处输入图像描述

使用当前目录设置, images目录甚至不会内置到jar中。 尝试提取它,你很可能会发现它不在那里。

你可以看出它在文件夹中没有小包徽标这一事实,如resources

在此处输入图像描述

构建在类路径(/ jar)中的唯一默认目录是src 。 我们需要将resources放入src

在此处输入图像描述

或配置构建路径以包括resources的文件。 一旦我们这样做,我们将在文件夹图标中看到小包图标。 这就是我们如何知道文件在构建路径上的方式

在此处输入图像描述


我们将使用的代码:

  • 第一张图片:不能,它不会工作(这是你目前的困境)

  • 第二张图片:

     ImageIcon icon = new ImageIcon( getClass().getResource("/resources/stackoverflow.png")); 
  • 第三张图片:

     ImageIcon icon = new ImageIcon( getClass().getResource("/stackoverflow.png")); 

要配置构建路径以使用第三个选项,请按照本答案示例2中的说明进行操作

从截图中可以看出,图像存在于名为“images”的文件夹中。 将它放在类路径中的一个文件夹中:src / images / success.jpg并调用:

 ImageIcon a = new ImageIcon(getClass().getResource("/images/success.jpg"));