在日食中从jar和外部加载图像

时间:2013-06-13 11:14:49

标签: java eclipse jar resources

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

  • 的src / COM / myprogram /.../ foo.java
  • RES /的icon.png
  • 的.project
  • ...

我知道您可以使用

从jar中加载图像
ImageIO.read(getClass().getResource("/res/icon.png"));

当你尝试直接使用eclipse运行应用程序时出现问题,因为(我猜)res文件夹不在src文件夹中,你得到null URL。我希望为源代码和资源提供单独的文件夹。

另外,我发现我可以在eclipse中将res文件夹添加到class-path中,以便我可以加载它:

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

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

是否可以完成某项操作,以便使用相同代码的两种方法读取图标?

2 个答案:

答案 0 :(得分:4)

在项目中创建一个resources文件夹,在eclipse中将其标记为源文件夹,将res文件夹放在resources下,并确保您的非日食版本能够完成所有内容在jar中的resources下。然后使用

加载图标
getClass().getResource("/res/icon.png")

你的问题是由于你的非eclipse构建将res放入jar中,但是eclipse将res内容放在目标目录中。 / p>

答案 1 :(得分:0)

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

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