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 检索的文件添加到类路径中。
- 右键单击项目,select构建路径并选择配置构建路径。
- 单击“源”>“添加文件夹...”并添加您要获取的资源所在的文件夹。
PD:如果您在“库”选项卡中将文件夹添加为 Class 文件夹,则 AppClassLoader 将无法识别 JPG 图片。
我正在创建一个从 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 检索的文件添加到类路径中。
- 右键单击项目,select构建路径并选择配置构建路径。
- 单击“源”>“添加文件夹...”并添加您要获取的资源所在的文件夹。
PD:如果您在“库”选项卡中将文件夹添加为 Class 文件夹,则 AppClassLoader 将无法识别 JPG 图片。