在JAR中加载图像

时间:2014-05-28 08:27:12

标签: java image

目前我正试图加载图像,这将是" JAR友好"可以说,但是我无法将图像加载到其中。

目前文件夹的布局如下:

>src
  >package.name.etc
    ImageLoader.java
>assets
  >images
    >menu
      background.png

目前我正在尝试实施以下代码:

    public Image loadImage(String filename) {
        Toolkit tk = Toolkit.getDefaultToolkit();
        URL url = null;
        try {
            url = this.getClass().getResource("assets/images/menu/" + filename);
        }
        catch (Exception e) {
            e.printStackTrace();
        }
        Image i = tk.getImage(url);
        return i;
    }

以及我尝试加载图片的另一种方法:

Image background = loadImage("background.png");

这只是返回一个空指针异常,说明那里没有图像,我真的不知道如何使图像正常工作。感谢任何帮助。谢谢。

编辑:这是我得到的错误,我不知道应该从哪里抓到它。

Uncaught error fetching image:
java.lang.NullPointerException
    at sun.awt.image.URLImageSource.getConnection(Unknown Source)
    at sun.awt.image.URLImageSource.getDecoder(Unknown Source)
    at sun.awt.image.InputStreamImageSource.doFetch(Unknown Source)
    at sun.awt.image.ImageFetcher.fetchloop(Unknown Source)
    at sun.awt.image.ImageFetcher.run(Unknown Source)

2 个答案:

答案 0 :(得分:0)

为了在jar中包含图像,我已完成以下步骤:

  1. 使用以下层次结构:

    SRC>

    packageName< --- code is here

    packageName.resources< --- image structure here

  2. 配置构建路径以包含packageName.resources
  3. 使用以下代码获取图像:

  4. try {
        BufferedImage img = 
            ImageIO.read(this.getClass().getResourceAsStream("resources/"+filename));
    } catch (IOException e) {
        e.printStackTrace();
    }   
    

答案 1 :(得分:0)

请查看THIS并检查是否需要assets/images/menu/部分