1

我想获取 ImageIO 的资源路径,以从某些 .png 中读出 BufferedImage 。在开发项目时,我使用 "/bin/stuff/icons/image.png" 的相对路径,但是当我将所有内容放在一个 .jar 文件中时,这肯定行不通,所以我需要一种方法来获取路径这些资源在 eclipse 中进行测试时以及稍后在 .jar 中运行时。

4

2 回答 2

1

经过大量尝试查找文件和获取文件的输入流后,我得出的结论是,这种方法每次都有效:

InputStream in = ClassLoader.getSystemClassLoader().getResourceAsStream(path)
BufferedImage image = ImageIO.read(in)

路径在哪里

"projectName/resourceFolder/" + nameOfResource.stuff

在 Eclipse 项目的 src 目录中找到。

例如

"myProject/images/icon.png"

当仅获取资源然后获取资源的路径以链接到文件时,您将在使用 .jar 时获得 FileNotFoundExceptions(但在使用 eclipse 进行测试时不会,因此应该警告人们认为他的代码有效)。

而且 - 不 - 我不会将图像保存在 bin/ 中 - 但它们会被复制到这个目录中,因此我在测试时会在那里找到它们。现在一切似乎都在工作。

于 2012-11-19T13:54:46.357 回答
0

不要bin在 Eclipse 的目录下放置任何内容:如果您对项目运行 clean,它将被删除。

您可以做的是定义一个新的源文件夹,如resources,并将图像放在那里。这样,它将自动复制到bin文件夹中。

如果您将resources文件夹包含到 Jar 中,则可以通过以下方式在两种环境中使用:

ImageIO.read( getClass().getResource("/image.png") )

PS:你可以避免使用不同的资源文件夹,但混合源和图像会很快污染你的源文件夹。

于 2012-11-16T14:49:24.140 回答