我使用IntelliJ构建了一个Java程序。该程序将加载媒体文件,例如图像(.jpg)和音频(.wav)。
当我在IDE中运行项目时,它运行良好。
但是当我生成项目的.jar
文件时,图像和音频文件将不会加载。
.wav
音频文件时,我得到了FileNotFoundException
.jpg
文件时,我得到了IIOException: Can't read the input file!
我正在像这样加载图像:
image = ImageIO.read(ImageScreen.class.getResourceAsStream("/quiz/resources/images/image_1.jpg"));`
当我在调试器中检查堆栈跟踪的顶部时,我可以看到:javax.imageio.ImageIO.read(Unkown Source)
。
在我的应用程序的其他部分,我可以从类似的目录中加载文本文件,并且它也可以在.jar文件中工作:
reader = new BufferedReader(
new InputStreamReader(
WordScreen.class.getResourceAsStream(
"/quiz/resources/words/wordlist.txt")));`
我的项目中只有一个名为quiz
的软件包,我不知道为什么它不起作用,因为我指定了绝对路径。
我看过其他问题,例如this one,但我认为我正在做建议的事情。
答案 0 :(得分:1)
感谢大家的帮助。我设法找到了解决问题的方法。
我更改了此内容
image = ImageIO.read(ImageScreen.class.getResourceAsStream("/quiz/resources/images/image_1.jpg"));
对此:
image = ImageIO.read(this.getClass().getResourceAsStream("/quiz/resources/images/image_1.jpg"));
我现在以相同的方式检索.wav
,并且可以正常工作:
this.getClass().getResourceAsStream("/quiz/resources/audio/audio1.wav");
答案 1 :(得分:0)
尝试使用getClassLoader()
this.getClass().getClassLoader().getResourceAsStream...