从jar文件中读取声音文件

时间:2012-12-20 23:30:28

标签: java audio jar

所以我一直在制作一款游戏,并决定要为它制作音效。我可以播放声音,直到我将类文件和(以及wav音频文件)打包到jar中,并且发现它无法找到文件。我正在使用getClass().getResource("sounds/enemyExplode.wav")来获取该文件。我应该使用不同的方法吗? 提前致谢!

3 个答案:

答案 0 :(得分:3)

类加载器的 getResource()方法对类路径中的资源进行操作。如果您在JAR中的以下位置发出声音:

/sounds/enemyExplode.wav

然后你需要在该调用中使用路径前面的前导斜杠(如上所述)。

请记住,JAR文件实际上只不过是文件系统的打包版本(与zip格式相同),并且类加载器对它进行操作,就像它是文件系统一样。

答案 1 :(得分:3)

在jar中,我已经了解到使用getResourceAsStream()会更好。如果您正在使用AudioInputStream,那么它也可以正常工作:

AudioInputStream ais = AudioSystem.getAudioInputStream
(Sound.class.getResourceAsStream(fileName));

这就是文件名的外观(soundbase,在你的情况下是“声音”):

"/" + soundbase + "/" + file.wav

我有一个功能齐全的声音课程,几年前我在网上找到了一个非常好的。我稍微修改了它,但如果你想让我发布它,它应该适用于大多数场景。

答案 2 :(得分:1)

首先,确保您的声音实际打包在jar文件中。您可以使用任何支持zip的存档程序打开jar文件。

其次,当你调用blabla.getClass().getResources("sounds")相对于blabla的类路径进行操作时,这意味着包含blabla的完整包名称将被添加到“声音”以解析jar中的完整路径文件。

如果要指定绝对路径,只需在路径前加斜杠:blabla.getClass().getResources("/sound")