首页 > 解决方案 > 生成的 .jar 无法加载某些媒体文件

问题描述

我使用 IntelliJ 构建了一个 java 程序。该程序加载媒体文件,如图像 (.jpg) 和音频 (.wav)。

当我在 IDE 中运行我的项目时,它工作正常。但是当我生成.jar我的项目文件时,图像和音频文件将不会加载。

我正在加载这样的图像:

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,但在我看来,我正在做建议的事情。

标签: javaswingfileloadingembedded-resource

解决方案


感谢大家的帮助。我设法找到了解决我的问题的方法。

我改变了这个:

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");

推荐阅读