java - UrlClassLoader加载图片资源

标签 java image resources urlclassloader

我正在创建一个由 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,我注意到该类仅针对 jar 文件。将文件夹 icon 添加到 eclipse 下的 Project->Libraries 我设法让 findResources 查看 icon 文件夹:不过,该镜像不是 jar 文件,因此不予考虑。

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

提前致谢

最佳答案

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

  • 您无法更改代码,而且它看起来正在检索 AppClassLoader。
  • 即使您将其转换为 URLClassLoader,它仍然是 AppClassLoader 的实例,因此它将查找类路径的内容以及 JAVA_HOME\lib\ext 中的所有 JAR/ZIP 文件。

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

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

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

关于java - UrlClassLoader加载图片资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56114239/

相关文章:

java - 尝试在方法中访问三角形数组时出现空指针异常

javascript - SVG 文件中的图像(jpeg 和 png)文件是如何格式化的?

ios - iOS 上的 Titanium ScrollableView 高度更大

javascript - 如何使用 JavaScript 将 base64 图像保存到用户的磁盘?

java - 将指针从 C 传递到 Java 变为 NULL

java - Spring JDBC 依赖问题

java:线程ID重用ID

Android原始资源找不到

asynchronous - 加特林 2 : concurrent request handling

java - 如何在多个 Web 应用程序之间共享公共(public)资源?