ClassLoader.getResource()在.jar文件中不起作用

时间:2009-11-02 22:15:11

标签: java image jar

我有以下代码:

private final ImageIcon placeHolder = new ImageIcon(this.getClass().getClassLoader().getResource("Cards\\trans.png"));

但是,将我的应用程序导出到.jar文件后,这不起作用。

2 个答案:

答案 0 :(得分:10)

您的“\ t”正在编译为选项卡 - 您需要将其转义:

private final ImageIcon placeHolder = new ImageIcon(
    this.getClass().getClassLoader().getResource("Cards\\trans.png"));

注意双反斜杠。当然,这可能不是唯一的错误 - 但这是一个开始......

实际上,我会用正斜杠来指定它。无论如何,这适用于Windows和基于Unix的操作系统,它也适用于jar文件。我突出显示双反斜杠的唯一原因是提高字符串转义点。试试这个:

private final ImageIcon placeHolder = new ImageIcon(
    this.getClass().getClassLoader().getResource("Cards/trans.png"));

接下来,确保您已获得该文件的完全正确名称,包括大小写。即使Windows文件系统通常不区分大小写,jar文件也是如此。如果它实际上是“卡片”而不是“卡片”或“TRANS.png”而不是“trans.png”,它将无效。

答案 1 :(得分:2)

使用它来获取jar文件中的图像

ClassLoader.getSystemResource("images/Springz3.png"));