。jar不会找到内部资源映像,但是编译的程序可以找到

问题描述 投票:0回答:1

我一直在尝试加载一些图片以在我的Swing UI中使用,虽然我的编译程序可以正确加载这些图像,但我的.jar找不到图像

首先,我将资源文件标记为“ Resource Root”。项目布局如下所示:

project layout shown.Outside of the source folder, there is the resource folder, and inside it an images folder with the resources in question.

编译输出布局如下:

enter image description here

。jar布局看起来像这样:

enter image description here

现在,正在加载图片的代码位于gui包中;在这里是:

        try {
            System.out.println(this.getClass().getResource("../images/buttonClip.png").getPath());
            attchmntBtnImg = ImageIO.read(getClass().getResource("../images/buttonClip.png"));
            sendMsgBtnImg  = ImageIO.read(getClass().getResource("../images/buttonForward.png"));
        }
        catch (IOException e) {
            e.printStackTrace();
        }

打印行输出正确打印图片的路径

/C:/Users/path/to/Project/out/production/Peer2Party_desktop/images/buttonClip.png

尽管从intellij想法运行时没有错误,但是生成的工件(如果我从cmd运行,无论是否具有管理员权限)在System.out.println()处都会给我NullPointerException,但是,毫无疑问,这不是错误的原因,因为即使我删除了println,它仍然会在下一行崩溃。

enter image description here

我尝试这样做是为了加载图像,无济于事:

this.getClass().getResource("/../images/buttonClip.png");
getClass().getResource("/../images/buttonClip.png");
this.getClass().getResource("images/buttonClip.png");
getClass().getResource("images/buttonClip.png");
this.getClass().getResourceAsStream("images/buttonClip.png");
getClass().getResourceAsStream("images/buttonClip.png");

非常欢迎您提供任何帮助。

重要注意事项:我在Windows 10上,图片位于正确的路径内(file.jar / images / buttonClip.png),但在运行时.class找不到它

java javax.imageio resource-loading
1个回答
1
投票

简单使用

this.getClass().getResource("/images/buttonclip.png");

它从项目根目录中查找文件

© www.soinside.com 2019 - 2024. All rights reserved.