Java 读取存储在Jar中的文件
我需要从项目中的资产文件中检索一些.png文件 我首先做了Java 读取存储在Jar中的文件,java,file,jar,fileinputstream,javax.imageio,Java,File,Jar,Fileinputstream,Javax.imageio,我需要从项目中的资产文件中检索一些.png文件 我首先做了ImageIO.read(新文件(“assets/img.png”),但一旦我将项目导出到.jar,它就不起作用了,所以我做了ImageIO.read(新文件输入流(“assets/img.png”)),但它在.jar文件中仍然不起作用 我最后做了ImageIO.read(Main.class.getResourceAsStream(“assets/img.png”))但它返回一个空值 如何读取.jar中文件夹中的图像文件?谢谢 以下是如
ImageIO.read(新文件(“assets/img.png”)
,但一旦我将项目导出到.jar,它就不起作用了,所以我做了ImageIO.read(新文件输入流(“assets/img.png”))
,但它在.jar文件中仍然不起作用
我最后做了ImageIO.read(Main.class.getResourceAsStream(“assets/img.png”))
但它返回一个空值
如何读取.jar中文件夹中的图像文件?谢谢
以下是如何设置我的项目:
|Project/
|-com.n1ark.project/
|--Main.java
|--Other classes
|-assets/
|--ing.png
|--Other Images
最好的做法不是将图像放入jar中,您应该创建如下项目结构:
|----- project-folder
|--------- app.jar
|--------- assets
|------------- img.png
|------------- img2.png
因此,在您的代码中,您可以简单地使用:
ImageIO.read(new File("assets/img.png"));
把图像放在罐子里没有什么错。我错误地解释了自己,问题是当我把项目导出到罐子里时,我的项目实际上是像你展示的那样设置的!请注意,在我的解决方案app.jar中,是您导出的内容,因此您可以在pc中的某个位置创建一个名为project folder的文件夹,并将其放入导出的jar中,以及另一个名为imgs的文件夹,其中包含图像,所有内容都可以正常工作。我说这是最好的做法,因为您不需要将资源文件放在jar中,这使应用程序的打包更容易,但从未说过将图像放在jar中是错误的@dnault。您还可以检查以确保图像确实包含在jar中。从命令行扫描JAR内容的快速方法:
JAR-t
好的,这些纹理没有打包到项目中。谢谢你的帮助!