java - 生成的 .jar 无法加载某些媒体文件
问题描述
我使用 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,但在我看来,我正在做建议的事情。
解决方案
感谢大家的帮助。我设法找到了解决我的问题的方法。
我改变了这个:
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");
推荐阅读
- javascript - 使用 JavaScript 在画布中碰撞两个对象
- python - 从 python 2.7 发送 JMS 消息
- symfony - symfony 4 中的表单验证不起作用
- mysql - 接受 mysql 中唯一列中的空值
- java - Java:线程不会增加我传递的类实例的实例变量的值
- ios - 蓝牙设备集成到 iphone
- haskell - 是否有正当理由在 IO 之上构建 monad 转换器堆栈?
- powershell - 从 csv 中选择随机记录并将 t.hem 添加到 SharePoint 列表中
- javascript - javascript获取值onchange
- java - Jpa 存储库查询 - java.lang.Object;不能转换为模型