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

Pat*_*ick 3 java jar image

我有以下代码:

private final ImageIcon placeHolder = new ImageIcon(this.getClass().getClassLoader().getResource("Cards\\trans.png"));
Run Code Online (Sandbox Code Playgroud)

但是,一旦我的应用程序导出到.jar文件中,这就不起作用了.

Jon*_*eet 10

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

private final ImageIcon placeHolder = new ImageIcon(
    this.getClass().getClassLoader().getResource("Cards\\trans.png"));
Run Code Online (Sandbox Code Playgroud)

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

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

private final ImageIcon placeHolder = new ImageIcon(
    this.getClass().getClassLoader().getResource("Cards/trans.png"));
Run Code Online (Sandbox Code Playgroud)

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