所以我一直在制作游戏,并决定要为它制作音效。我可以很好地播放声音,直到我将类文件和(和 wav 音频文件)打包到 jar 中,却发现它找不到文件。我getClass().getResource("sounds/enemyExplode.wav")
用来获取文件。我应该使用其他方法吗?提前致谢!
3 回答
在一个 jar 中,我了解到使用 getResourceAsStream() 效果更好。如果您使用的是 AudioInputStream,那么它也同样有效:
AudioInputStream ais = AudioSystem.getAudioInputStream
(Sound.class.getResourceAsStream(fileName));
这就是文件名的外观(soundbase,在您的情况下是“声音”):
"/" + soundbase + "/" + file.wav
我有一个功能齐全的声音课程,几年前我在网上的某个地方找到了它,效果很好。我稍微修改了它,但如果你想让我发布它,它应该适用于大多数情况。
The class loader's getResource() method operates on resources within the class path. If you have the sounds at the following location in the JAR:
/sounds/enemyExplode.wav
Then you need to use a leading slash in front of the path (just as above) in that call.
Remember a JAR file is really nothing more than a packaged up version of the filesystem (same format as a zip) and the class loader operates upon it as it would if it were a filesystem.
首先,确保您的声音实际打包在 jar 文件中。您可以使用任何支持 zip 的存档器打开 jar 文件。
其次,当您调用时,blabla.getClass().getResources("sounds")
您相对于 blabla 的类路径进行操作,这意味着包含 blabla 的完整包名将被添加到“声音”以解析 jar 文件中的完整路径。
如果要指定绝对路径,只需在路径前加上斜杠:blabla.getClass().getResources("/sound")