【发布时间】:2020-02-18 22:20:49
【问题描述】:
我知道以前有人问过这个问题,但是在尝试了所有变体后我无法让它工作。我有一个小程序,我希望启动框架上显示图像。我可以通过将 jar 放在与图像相同的文件夹中并引用它来实现这一点,但是当我尝试在 jar 文件本身中引用时,我不断收到错误:
Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException
我使用的代码是这样的:
private void imagePanel() {
setLayout(new BorderLayout());
BufferedImage image;
try {
image = ImageIO.read(this.getClass().getResource("/src/ticketMaster/img/logo.png"));
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
add(new JLabel(new ImageIcon(image)), BorderLayout.CENTER);
}
我不确定路径是否不正确,我在名为 img 的包中创建了一个 img 文件夹,其中包含徽标。我已经尝试了它的所有变体
/img/logo.png
/ticketMaster/img/logo.png
/src/ticketMaster/img/logo.png
我无法像引用 jar 外的图像那样加载图像。我也使用过resourceasstream,但没有任何运气。
这里有什么想法吗?
【问题讨论】:
-
您缺少详细信息 - 与顶级
src文件夹相关的图像存储在哪里?你永远不应该引用src- 打包时它不会存在。解压缩 Jar 文件并确保包含图像。重复发布不会很好,除非您可以提供一些关于为什么其他解决方案不起作用的信息。我的猜测,根据您提供的内容是路径错误或图像未包含在您的 Jar 中 -
它在包的根目录下,我试过把它拿出来直接把图片也放到根目录下,还是不行。
-
“它在包的根文件夹中” - 它本身是什么?然后使用
/logo.png作为路径 -
请不要重复同样的问题,因为这违反了网站规则。
-
好的,所以我再次打包,它没有将图像放入 jar 文件中,仅将类放入 jar 中。我在 Eclipse 的运行配置中添加了 info 文件夹。不知道我在那里做错了什么