使用 ClassLoader 检索资源的路径
Path for retrieving resources with ClassLoader
基本上,我想在 JAR 文件中包含我的主要 JFrame
图标,因此不需要从外部位置加载它。
为此,我搜索了Java的资源系统。
我用 Eclipse 做了什么:
我创建了一个名为 "res":
的新文件夹
我已经使用 Windows' 资源管理器复制了其中的文件:
我已经将该文件夹设为源文件夹:
我写过这段代码:
URL url = ClassLoader.getSystemResource("/res/icona20.ico");
但是 url
是 null
。
我做错了什么?
类加载器将从您添加到类路径的每个源文件夹开始获取资源。因此,URL 应该是:
URL url = ClassLoader.getSystemResource("icona20.ico");
如前所述,您似乎已将 res
添加为源文件夹,因此它是一个根目录,而不是名称,例如 src
.
URL url = ClassLoader.getSystemResource("icona20.ico");
Class 加载程序使用绝对(区分大小写)路径,没有明确的前导斜杠 /...
.
绝对路径必须有前导斜杠的相对路径:
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 ;)。
基本上,我想在 JAR 文件中包含我的主要 JFrame
图标,因此不需要从外部位置加载它。
为此,我搜索了Java的资源系统。 我用 Eclipse 做了什么:
我创建了一个名为 "res":
的新文件夹我已经使用 Windows' 资源管理器复制了其中的文件:
我已经将该文件夹设为源文件夹:
我写过这段代码:
URL url = ClassLoader.getSystemResource("/res/icona20.ico");
但是 url
是 null
。
我做错了什么?
类加载器将从您添加到类路径的每个源文件夹开始获取资源。因此,URL 应该是:
URL url = ClassLoader.getSystemResource("icona20.ico");
如前所述,您似乎已将 res
添加为源文件夹,因此它是一个根目录,而不是名称,例如 src
.
URL url = ClassLoader.getSystemResource("icona20.ico");
Class 加载程序使用绝对(区分大小写)路径,没有明确的前导斜杠 /...
.
绝对路径必须有前导斜杠的相对路径:
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 ;)。