Java项目在Eclipse上工作但在导出到runnable jar文件时不起作用

时间:2015-02-11 10:53:24

标签: java eclipse jar jlabel

我遇到了将java文件导出到runnable jar文件的问题。 在日食中它工作正常,但是当我导出它时,它不起作用。

我已经尝试过(java -jar MyJar.jar)来获取日志,但它说 “无法访问jar文件”

我认为问题在于:

java.net.URL logoOneUrl = getClass().getResource("/logo.png"); //already tried without the "/" and it doesn't work withouth the "/"
Icon logoOne = new ImageIcon(logoOneUrl)

因为我在导出时将其放在评论//中,但是没有图像。

我也尝试过这种方式: java.net.URL logoScience = getClassLoader().getResource("logo.png");但它也不起作用。 我究竟做错了什么? 如何在JLabel上导出带有图像的可运行jar文件?

(这是我在JLabels上的内容) JLabel lblImgLogin = new JLabel(logoOne);

更新

ImageIcon icon = createImageIcon("/logo.png","a pretty but meaningless splat");

protected ImageIcon createImageIcon(String path,String description) { java.net.URL imgURL = getClass().getResource(path); if (imgURL != null) { return new ImageIcon(imgURL, description); } else { System.err.println("Couldn't find file: " + path); } return null; }

JLabel lblImgLogin = new JLabel(icon);

同样的问题,在Eclipse上运行但在导出到runnable jar文件时不能正常工作

2 个答案:

答案 0 :(得分:4)

这是正确的:

enter image description here

public class MainApp {

    public static void main(String[] args) {
        JFrame frame = new JFrame("Testing");
        ImageIcon icon = createImageIcon("/resources/logo.png");
        JLabel label1 = new JLabel("Image and Text", icon, JLabel.CENTER);

        //Set the position of the text, relative to the icon:
        label1.setVerticalTextPosition(JLabel.BOTTOM);
        label1.setHorizontalTextPosition(JLabel.CENTER);

        frame.getContentPane().add(label1);
        frame.pack();
        frame.setVisible(true);
    }

    protected static ImageIcon createImageIcon(String path) {
        URL imgURL = MainApp.class.getResource(path);
        if (imgURL != null) {
            return new ImageIcon(imgURL);
        } else {
            System.err.println("Couldn't find file: " + path);
            return null;
        }
    }
}

enter image description here

enter image description here

答案 1 :(得分:1)

创建文件夹名称'Resources'(正是这个名字)。现在将logo.png保存在Resources文件夹中。现在使用代码如下。

ImageIcon imageIcon = new ImageIcon(getClass().getResource("/Resources/logo.png"))

编译并构建jar(为Eclipse导出使用'生成的jar所需的包')。如果在提取jar之后,你得到了它下面的Resources文件夹和文件,那么希望它能够正常工作。抱歉我的英文不好