Java 在.jar和eclipse中查找具有相同字符串计算的资源
我想获取ImageIO从一些.png文件中读取BuffereImage的资源路径。Java 在.jar和eclipse中查找具有相同字符串计算的资源,java,resources,path,javax.imageio,Java,Resources,Path,Javax.imageio,我想获取ImageIO从一些.png文件中读取BuffereImage的资源路径。 在开发项目时,我使用了“/bin/stuff/icons/image.png”的相对路径,但当我将所有内容放在一个.jar文件中时,这肯定不起作用,因此,我需要一种方法来获取这些资源的路径,无论是在eclipse中测试时还是以后在.jar中运行时。不要在eclipse中的bin目录下放置任何内容:如果在项目上运行clean,它将被擦除 您可以定义一个新的源文件夹,如resources,然后将图像放在那里。这样,它
在开发项目时,我使用了“/bin/stuff/icons/image.png”的相对路径,但当我将所有内容放在一个.jar文件中时,这肯定不起作用,因此,我需要一种方法来获取这些资源的路径,无论是在eclipse中测试时还是以后在.jar中运行时。不要在eclipse中的
bin
目录下放置任何内容:如果在项目上运行clean,它将被擦除
您可以定义一个新的源文件夹,如resources
,然后将图像放在那里。这样,它将自动复制到bin
文件夹中
如果您将resources
文件夹包括在Jar中,则可通过以下方式在两种环境中使用该文件夹:
ImageIO.read( getClass().getResource("/image.png") )
PS:您可以避免使用不同的资源文件夹,但混合使用源和图像会很快污染您的源文件夹。不要在Eclipse中的
bin
目录下放置任何内容:如果您对项目运行清理,它将被删除
您可以定义一个新的源文件夹,如resources
,然后将图像放在那里。这样,它将自动复制到bin
文件夹中
如果您将resources
文件夹包括在Jar中,则可通过以下方式在两种环境中使用该文件夹:
ImageIO.read( getClass().getResource("/image.png") )
PS:您可以避免使用不同的资源文件夹,但混合使用源和图像会很快污染源文件夹。在多次尝试查找文件和将输入流导入文件后,我得出结论,这种方法每次都有效:
InputStream in = ClassLoader.getSystemClassLoader().getResourceAsStream(path)
BufferedImage image = ImageIO.read(in)
路径在哪里
"projectName/resourceFolder/" + nameOfResource.stuff
如eclipse项目的src目录中所示
例如
当只获取资源,然后获取链接到文件的资源路径时,您将在使用.jar时获得FileNotFoundExceptions(但在使用eclipse进行测试时不会得到,因此应该提醒您,不要认为他的代码有效)
和-否-我不在bin/中保存图像-但是它们被复制到这个目录中,因此我在测试时在那里找到它们。现在一切似乎都正常了。在尝试了大量查找文件和将输入流导入文件后,我得出结论,这种方法每次都有效:
InputStream in = ClassLoader.getSystemClassLoader().getResourceAsStream(path)
BufferedImage image = ImageIO.read(in)
路径在哪里
"projectName/resourceFolder/" + nameOfResource.stuff
如eclipse项目的src目录中所示
例如
当只获取资源,然后获取链接到文件的资源路径时,您将在使用.jar时获得FileNotFoundExceptions(但在使用eclipse进行测试时不会得到,因此应该提醒您,不要认为他的代码有效)
和-否-我不在bin/中保存图像-但是它们被复制到这个目录中,因此我在测试时在那里找到它们。现在一切似乎都在运转