使用 eclipse 生成 .jar 文件后如何加载图像?

How do I load an image after I generated a .jar file with eclipse?

我刚刚在 java 中编写了一个小程序,可以拍摄图像并将其打印在相框上。 我使用 JPanel 加载图像:

public class Board extends JPanel {

    private Image mummy;

    public Board() {

        initBoard();

    }

    private void initBoard() {
    
        loadImage();
    
        int w = mummy.getWidth(this);
        int h =  mummy.getHeight(this);
        setPreferredSize(new Dimension(w, h));        
    }

    private void loadImage() {
    
        ImageIcon ii = new ImageIcon("mummy.png");
        mummy = ii.getImage();        
    }

    @Override
    public void paintComponent(Graphics g) {

        g.drawImage(mummy, 0, 0, null);
    }
}

和 JFrame 来打印它。 然后我通过 Eclipse 的导出部分创建了 .jar 文件(可运行的 JAR 文件)。

问题是现在我在 运行 .jar 文件时无法加载图像。我尝试将图像放在 .jar zip 中的任何位置,但只是代码无法加载它。

每个人都知道如何使用这种方法加载图像,或者我应该使用包装器来创建 .jar 文件而不是 eclipse?

伙计们,我想通了:

ImageIcon("") 具有放置所有代码的默认起始目录,但在 eclipse 项目和 eclipse 生成的 Runnable jar 文件之间有所不同。 - 当是项目时:就是项目的目录,所以src和bin目录在哪。 -当是.jar时:src不存在,现在起始目录是.jar文件所在的目录。

例如: 为简单起见,让我们将创建的可运行文件放在 ~ 目录中。

-使用new ImageIcon("src/images/mummy.png"),你必须将目录“images”和相关文件放在项目的src目录中,源文件和包所在的目录,结构如下:

...eclipse-workspace/Project/src/cli/*.java - 源代码所在的位置。

...eclipse-workspace/Project/src/images/mummy.png - 文件所在的位置。

在使用 eclipse 创建可运行的 .jar 后,您必须将一个新的“src”目录和“images”放在 .jar 所在的同一目录中,形成如下结构:

~/project.jar(.jar 文件)

~/src/images/mummy.png(我在代码中用new ImageIcon("src/images/mummy.png")

加载的图片

谢谢你的评论。