【发布时间】:2019-02-25 22:43:42
【问题描述】:
我使用 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,但在我看来,我正在按照建议做。
【问题讨论】:
-
您在 JAR 文件中的正确位置看到
image_1.jpg了吗? -
FileNotFoundException和wav表示您是从文件系统加载,而不是从 JAR 加载。请添加代码以重现问题。 -
@RostislavKrasny 是的,我已经检查过了,文件肯定在那里。
标签: java swing file loading embedded-resource