在eclipse中找到的文件,但是当我在终端中运行.jar时没有

时间:2014-05-09 09:28:34

标签: java cmd filesystems

我有一个程序必须从终端界面播放声音。

代码非常简单,现在是:

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

2 个答案:

答案 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可能是更好的解释。