【发布时间】:2014-05-09 17:58:29
【问题描述】:
我有一个程序必须从终端界面播放声音。
代码相当简单,在这里:
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 提示符中播放声音吗?如果没有,有没有这样的?
谢谢, 银鸭
【问题讨论】:
-
这个音乐文件夹相对于你运行它的位置在哪里?
-
您的问题是相对文件路径
music/sound.wav。我想,当您创建 jar 时,您还没有在 jar 中包含音频文件。当然,您可以使用所需资源构建您的 jar,但为什么不让您的应用程序接受文件路径作为输入呢?然后,您可以在运行 jar 时提供完整路径,它可以拾取文件。这样,您可以播放您提供的任何文件。 -
music文件夹是捆绑到jar文件里的,所以我不明白。当我不捆绑它时,我有另一个错误说路径不存在。
-
嗯,奇怪。文件分隔符没有发生什么奇怪的事情吗?你的代码有
music/sound.wav,但错误消息有music\sound.wav。 -
是的,java使用/作为分隔符和windows \,但我认为jvm会处理它。
标签: java cmd filesystems