我在eclipse的java项目中有这样的结构:
我知道您可以使用
从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);
但是这个添加代码只有在开发时才需要,我不喜欢这样做(代码应该尽可能干净和最终)。
是否可以完成某项操作,以便使用相同代码的两种方法读取图标?
答案 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)。
此文件夹中的所有内容都将在类路径中提供。