我得到的文件是这样的:
File testHeaderFile = new File(ClassLoader.getSystemResource("Images/redHeader.jpg").toURI());
当我在eclipse中编译时,这种方法有效,但是当我从可执行jar中运行时,这种方式无效。
此代码正在使用jar:
ImageIcon pc = new ImageIcon(getClass().getClassLoader().getResource("Images/stateFarmTheme1Icon.png"));
我到底做错了什么?
答案 0 :(得分:1)
每个类加载器都有自己的搜索路径。
<强> ClassLoader.getSystemResource:强> 只需从搜索路径(包括eclipse中的项目目录)中找到指定名称的资源,用于加载类并通过系统类loader.so定位资源,不包括可执行jar目录。
<强>的getClass()getClassLoader()的getResource:强> 此方法将首先在父类加载器中搜索资源; 如果父项为null,则搜索内置到虚拟机的类加载器的路径。包括可执行jar目录。