.jar 不会找到内部资源图像,但编译后的程序会
.jar will not find internal resource images but compiled program does
我一直在尝试加载一些图片以在我的 Swing 中使用 UI 虽然我编译的程序会正确加载图像,但 我的 .jar 找不到图像.
首先,我将我的资源文件标记为“Resource Root”。项目布局如下所示:
编译输出布局如下所示:
.jar 布局如下所示:
现在,加载图片的代码在 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 idea 运行 中没有错误,但生成的工件(如果我从 cmd 运行 它,有或没有管理员权限)给了我一个 NullPointerException 在System.out.println(),但是,毫无疑问,这不是错误的原因,因为即使我删除了 println,它仍然会在下一行崩溃。
我试过这些以加载图像,但无济于事:
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");
非常欢迎任何帮助。
重要提示:我在windows10,图片在正确的路径里面(file.jar/images/buttonClip.png),但在 运行 时 .class 找不到它
只需使用
this.getClass().getResource("/images/buttonclip.png");
它从项目根目录中查找文件
我一直在尝试加载一些图片以在我的 Swing 中使用 UI 虽然我编译的程序会正确加载图像,但 我的 .jar 找不到图像.
首先,我将我的资源文件标记为“Resource Root”。项目布局如下所示:
编译输出布局如下所示:
.jar 布局如下所示:
现在,加载图片的代码在 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 idea 运行 中没有错误,但生成的工件(如果我从 cmd 运行 它,有或没有管理员权限)给了我一个 NullPointerException 在System.out.println(),但是,毫无疑问,这不是错误的原因,因为即使我删除了 println,它仍然会在下一行崩溃。
我试过这些以加载图像,但无济于事:
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");
非常欢迎任何帮助。
重要提示:我在windows10,图片在正确的路径里面(file.jar/images/buttonClip.png),但在 运行 时 .class 找不到它
只需使用
this.getClass().getResource("/images/buttonclip.png");
它从项目根目录中查找文件