我正在创建一个由 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 文件。
您说过无需将文件移动到任何地方即可保证项目正常工作,因此只有一个选择:将要使用类加载器检索的文件添加到类路径中。
- 右键单击项目,选择“构建路径”,然后选择“配置构建路径”。
- 点击“来源”>“添加文件夹...”,然后添加您要获取的资源所在的文件夹。
PD:如果您在“库”选项卡中将该文件夹添加为“类文件夹”,则 AppClassLoader 将无法识别 JPG 图像。
关于java - UrlClassLoader加载图片资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56114239/