我有一个程序必须从终端界面播放声音。
代码非常简单,现在是:
public static synchronized void playSound() {
new Thread(new Runnable() {
public void run() {
File _file = new File("music/sound.wav");
try (AudioInputStream _audio = AudioSystem
.getAudioInputStream(_file)) {
Clip _clip = AudioSystem.getClip();
_clip.open(_audio);
_clip.start();
} catch ([…] e) {
// […]
}
}
}).start();
}
该文件位于我的源路径中的音乐文件夹中。
当我在eclipse中运行程序时,所有工作都非常顺利。但是如果我将它导出到.jar文件中并在windows cmd中尝试它,我收到此消息:
java.io.FileNotFoundException: music\sound.wav (The system cannot find the path specified)
[edit]音频文件确实打包在.jar中,但它仍无效。
甚至可以从Windows提示符播放声音吗?如果没有,是否有一个呢?
谢谢, SilverDuck
答案 0 :(得分:0)
当文件打包到jar文件中时,它不再是文件。它需要被视为资源。尝试像这样更改代码
InputStream inputStream = this.getClass().getResourceAsStream("music/sound.wav");
try (AudioInputStream _audio = AudioSystem.getAudioInputStream(inputStream)) {
答案 1 :(得分:0)
尝试不将您的音乐打包在jar中(将其放在旁边)或将打包的文件作为资源加载。
例如,请参阅Java resource files。
此处Loading resources (images) contained in a .Jar file or in the classpath可能是更好的解释。