我得到的文件是这样的:

File testHeaderFile = new File(ClassLoader.getSystemResource("Images/redHeader.jpg").toURI());


当我在eclipse中编译时,此方法有效,但是当我从可执行jar运行时,则无效。

这段代码与罐子一起工作:

ImageIcon pc = new ImageIcon(getClass().getClassLoader().getResource("Images/stateFarmTheme1Icon.png"));


我到底在做什么错?

最佳答案

每个类加载器都有自己的搜索路径。

ClassLoader.getSystemResource:
只需从用于加载类的搜索路径(在eclipse中包含项目目录)中找到具有指定名称的资源,然后通过系统类loader来查找该资源即可。因此,不包括可执行jar目录。

getClass()。getClassLoader()。getResource:
此方法将首先在父类加载器中搜索资源;
如果父级为null,则搜索虚拟机内置的类加载器的路径。因此,包括可执行jar目录。

09-27 21:23