0

我得到一个像这样的文件:

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

这在我在 eclipse 中编译时有效,但在我从可执行 jar 运行时无效。

此代码与 jar 一起使用:

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

我到底在做什么错?

4

1 回答 1

1

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

ClassLoader.getSystemResource: 只从用于加载类的搜索路径(包括eclipse中的项目目录)中找到一个指定名称的资源,通过系统类loader.so定位资源,不包括可执行jar目录。

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

于 2013-07-18T05:20:45.750 回答