使用ClassLoader

时间:2015-08-31 14:43:24

标签: java eclipse image embedded-resource

基本上,我想在JAR文件中包含我的主JFrame图标,因此不需要从外部位置加载它。

为实现这一目标,我搜索了Java的资源系统。 我用Eclipse做了什么:

  1. 我创建了一个名为“res”的新文件夹:

  2. 我使用Windows的资源管理器复制了其中的文件:

  3. 我已将该文件夹设为源文件夹:

  4. 我写了这段代码:

    URL url = ClassLoader.getSystemResource("/res/icona20.ico");
    
  5. urlnull。 我做错了什么?

2 个答案:

答案 0 :(得分:3)

类加载器将从您添加到类路径的每个源文件夹开始获取资源。因此,URL应如下所示:

URL url = ClassLoader.getSystemResource("icona20.ico");

答案 1 :(得分:3)

如前所述,您似乎添加了res作为源文件夹,因此它是一个根,而不是名称,如src

URL url = ClassLoader.getSystemResource("icona20.ico");

类加载器使用绝对(区分大小写)路径,没有明确的前导斜杠/...

具有绝对路径的强制性前导斜杠的相对路径:

URL url = Xyz.class.getResource("/icona20.ico");

您可能更喜欢.png而不是.ico,因为后一种格式在Java SE中不是标准格式。

(关于常见做法。)构建工具maven使用以下源文件夹作为标准:

/src/main/java/
/src/main/resources/
/src/test/java/
/src/test/resources/

您对res的使用让人联想到MS Visual Studio;)。