UrlClassLoader 加载图片资源

UrlClassLoader to load a image resource

我正在创建一个从 java 项目开始的 eclipse 工作区(不是我写的)。 我在使用以下方法时遇到问题:

    public static URL getURL(String fileName) {
       URLClassLoader urlLoader = (URLClassLoader) getInstance().getClass()
            .getClassLoader();

       URL fileLocation = urlLoader.findResource(fileName);

       return fileLocation;

因为 findResource 没有找到 JPG 资源(文件名 = "icons/INIT.JPG")。

查看 urlLoader.getUrl,我注意到 class 仅针对 jar 文件。将文件夹 icon 添加到 eclipse 下的 Project->Libraries 我设法让 findResources 查看icon 文件夹:不过,图像不是 jar 文件,因此不予考虑。

老实说,我不明白使用此过程加载图像的意义,但我无法更改代码,我希望在 Eclipse 项目设置中找到解决方案。

提前致谢

根据原评论中对我问题的回答,有一些事实:

  • 您无法更改代码,看起来它正在检索 AppClassLoader。
  • 即使你把它转换成 URLClassLoader,它仍然是一个 AppClassLoader 的实例,所以它会寻找类路径的内容和所有 JAR/ZIP 个文件在 JAVA_HOME\lib\ext.

您说项目保证无需将文件移动到任何地方即可运行,因此只有一个选择:将要使用 ClassLoader 检索的文件添加到类路径中。

  1. 右键单击项目,select构建路径并选择配置构建路径。
  2. 单击“源”>“添加文件夹...”并添加您要获取的资源所在的文件夹。

PD:如果您在“库”选项卡中将文件夹添加为 Class 文件夹,则 AppClassLoader 将无法识别 JPG 图片。