Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在JAR中加载图像_Java_Image - Fatal编程技术网

Java 在JAR中加载图像

Java 在JAR中加载图像,java,image,Java,Image,目前,我正试图以一种可以说是“JAR友好”的方式加载图像,但我在加载图像时遇到了困难 目前,文件夹的布局如下: >src >package.name.etc ImageLoader.java >assets >images >menu background.png 目前,我正在尝试实现以下代码: public Image loadImage(String filename) { Toolkit tk =

目前,我正试图以一种可以说是“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)

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

  • 使用以下层次结构:

    src>


    packageName请查看并检查是否需要
    资产/图像/菜单/
    部分

    是否使用Maven?能否显示错误的堆栈位置?确保资产文件夹位于类路径中。不要使用Maven。添加了错误。在类路径中?那么我该如何使它保持在当前结构中呢?右键单击eclipse中的图像并选择properties,复制完整的指定路径并尝试使用该路径。严格来说,此解决方案不是必需的:您不必将资产放在调用它们的代码的子文件夹中。尽管我尝试了此方法,但没有更改目录结构,只是将…..getResourceAsStream(“/menu/images/”+filename)放在其中;它从assets文件夹中获取该图像,而无需更改目录。所以它仍然有效。
    try {
        BufferedImage img = 
            ImageIO.read(this.getClass().getResourceAsStream("resources/"+filename));
    } catch (IOException e) {
        e.printStackTrace();
    }