2

我在eclipse的java项目中有这样的结构:

  • src/com/myprogram/.../foo.java
  • res/icon.png
  • 。项目
  • ...

我知道你可以从一个罐子里加载一个图像

ImageIO.read(getClass().getResource("/res/icon.png"));

当您尝试使用 eclipse 直接运行应用程序时,问题就来了,因为(我猜)res 文件夹不在 src 文件夹中,您会得到一个null URL. 我想为源代码和资源设置单独的文件夹。

另外,我发现我可以res在 eclipse 中将文件夹添加到类路径中,这样我就可以加载它:

URL url = getClass().getResource("/res/icon.png");
if (url == null)
    url = getClass().getResource("/icon.png");
ImageIO.read(url);

但是这个添加代码只有在你开发的时候才需要,我不喜欢做这样的事情(代码应该尽可能的干净和最终)。

可以用相同的代码用两种方法读取图标吗?

4

2 回答 2

4

在您的项目中创建一个resources文件夹,将其标记为 eclipse 中的源文件夹,将res文件夹放在 下resources,并确保您的非 eclipse 构建resourcesjar 中的所有内容。然后使用加载图标

getClass().getResource("/res/icon.png")

您的问题是由于您将非 eclipse 构建放入resjar 中,但 eclipse 将内容res放入目标目录中。

于 2013-06-13T11:40:01.293 回答
0

您需要将 res 文件夹标记为源文件夹(项目属性 > 源 > 添加文件夹)。

此文件夹中的所有内容都将在类路径中可用。

于 2013-06-13T11:39:30.853 回答