无法从包中加载图像

时间:2016-11-25 23:59:16

标签: java image maven resources package

我的问题是我无法使用maven从我的java项目中的子包中加载图像。

This is my project structure

我尝试了一些不同的代码片段,但总是得到一个Nullpointer异常。

我试过:

Image image = new Image("/frontend/pictures/logo.png");
Image image = new Image("frontend/pictures/logo.png");
Image image = new Image("pictures/logo.png");
Image image = new Image(getClass().getResource("frontend/pictures/logo.png").toString());

在另一个项目中,它对我来说很好,但现在我不知道我做错了什么。

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

这是我使用ImageIcons创建的一个很好的图像加载方法:

public Image img(String path) {
    ImageIcon icon = new ImageIcon(path);
    return icon.getImage();
}

然后,当您想加载图片时,只需使用:

Image image = img("frontend/pictures/logo.png") 

这应该有效。 请注意,如果要使用可运行的JAR,则必须使用此实现:

static Image setImage(String path) {
    Image tmp = null;
    try {
        tmp = ImageIO.read(/*Class name*/.class.getResourceAsStream(path));
    } catch (IOException e){
        e.printStackTrace();
    }
    return tmp;
}

并输入:

Image image = setImage("/org/.../logo.png");

将您的图片放在JAR的org文件夹内的某个子文件夹中。

答案 1 :(得分:0)

我忘记说我使用JavaFX是不好的。 但我解决了我的问题。

我将图片dir添加为ressource文件夹,然后:

Image img = new Image(getClass.getRessource("/logo.png").toString);

感谢您的帮助。