我想获取ImageIO的资源路径,以便从某些.png中读出BufferedImage。 在开发项目的过程中,我使用“/bin/stuff/icons/image.png”的相对路径,但是当我将所有内容放在.jar文件中时,这肯定不起作用,所以我需要一种方法来获取路径这些资源都是在eclipse中测试时以及稍后在.jar中运行时的。
答案 0 :(得分:1)
经过大量尝试找到文件并将输入流输入到文件后,我得出的结论是这种方法每次都有效:
InputStream in = ClassLoader.getSystemClassLoader().getResourceAsStream(path)
BufferedImage image = ImageIO.read(in)
路径
"projectName/resourceFolder/" + nameOfResource.stuff
在eclipse项目的src目录中找到。
E.g。
"myProject/images/icon.png"
当只获取资源然后获取资源的路径以链接到文件时,在使用.jar时将获得FileNotFoundExceptions(但是在使用eclipse进行测试时不会这样,因此应该警告应该认为他的代码有效)。
而且 - 不 - 我没有在bin /中保存图像 - 但是它们会被复制到这个目录中,因此我会在测试时找到它们。现在一切似乎都在起作用。
答案 1 :(得分:0)
不要在Eclipse的bin
目录下放置任何内容:如果在项目上运行clean,它将被删除。
您可以做的是定义一个新的源文件夹,如resources
,并将图像放在那里。这样它就会自动复制到bin
文件夹。
如果您将resources
文件夹包含在Jar中,它将在以下两种环境中使用:
ImageIO.read( getClass().getResource("/image.png") )
PS:你可以使用不同的资源文件夹逃避,但混合源和图像会很快污染你的源文件夹。