Java 运行jar文件时未显示图标

Java 运行jar文件时未显示图标,java,image,swing,jbutton,embedded-resource,Java,Image,Swing,Jbutton,Embedded Resource,我是Java的初学者,我按照教程编写了这个程序(是的,我是个初学者),当我在Eclipse上运行它时,它工作得非常好。它在我编码的计算机上也运行得很好。但是,如果我将它发送到另一台计算机(只是.jar文件)并运行它,它就会失败,因为它找不到图标。这是我所有的东西。我使用的图标与程序的所有类文件一起保存在bin文件夹中。出于隐私原因,我用“单词”替换了某些行 我遵循的教程分为两部分: 第1部— 第2部— 我的主课(我称之为苹果,因为教程是这样的) 现在我的第二节课“Gui”: 非常感谢你的帮助 这

我是Java的初学者,我按照教程编写了这个程序(是的,我是个初学者),当我在Eclipse上运行它时,它工作得非常好。它在我编码的计算机上也运行得很好。但是,如果我将它发送到另一台计算机(只是.jar文件)并运行它,它就会失败,因为它找不到图标。这是我所有的东西。我使用的图标与程序的所有类文件一起保存在bin文件夹中。出于隐私原因,我用“单词”替换了某些行

我遵循的教程分为两部分:

第1部—

第2部—

我的主课(我称之为苹果,因为教程是这样的)

现在我的第二节课“Gui”:

非常感谢你的帮助

这本书值得一读,其中详细解释了它,并从jar加载了图像

您可以根据图像位置尝试任何一种

// Read from same package 
ImageIO.read(getClass().getResourceAsStream("b.png"));

// Read from src/images folder
ImageIO.read(getClass().getResource("/images/b.png"))

// Read from src/images folder
ImageIO.read(getClass().getResourceAsStream("/images/b.png"))

Here
Icon b=新的图像图标(getClass().getResource(“b.png”)将它插入
新ImageIcon(…)
在Eclipse中运行它时,我得到以下错误:线程“main”java.lang.NullPointerException位于javax.swing.ImageIcon。(ImageIcon.java:181)位于Gui。(Gui.java:18)位于apples.main(apples.java:6)apples.java的第6行是什么?可能是没有正确加载image.Gui.java中第18行的内容。按照stacktrace进行操作。嘿,Sacha862,你是否尝试将图像添加到保存GUI和苹果的同一文件夹中。尝试将它保存在src中,并用旧代码检查它。希望这可以在这方面帮助您:-)
import java.awt.FlowLayout;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JOptionPane;

public class Gui extends JFrame {

private JButton custom;

public Gui () {
    super("WORDS");
    setLayout(new FlowLayout());

    Icon b = new ImageIcon(getClass().getResource("b.png"));
    custom = new JButton(null, b);
    custom.setToolTipText("WORDS");
    add(custom);

    HandlerClass handler = new HandlerClass();
    custom.addActionListener(handler);
}

private class HandlerClass implements ActionListener {
    public void actionPerformed(ActionEvent event) {
        JOptionPane.showMessageDialog(null, String.format("WORDS", event.getActionCommand()));
        JOptionPane.showMessageDialog(null, String.format("WORDS", event.getActionCommand()));
        JOptionPane.showMessageDialog(null, String.format("WORDS", event.getActionCommand()));
        JOptionPane.showMessageDialog(null, String.format("WORDS", event.getActionCommand()));
    }
}
}
// Read from same package 
ImageIO.read(getClass().getResourceAsStream("b.png"));

// Read from src/images folder
ImageIO.read(getClass().getResource("/images/b.png"))

// Read from src/images folder
ImageIO.read(getClass().getResourceAsStream("/images/b.png"))