0

我正在制作一个程序,我希望它在打开时开始播放声音。我认为最简单的方法是将 .wav 文件嵌入到我的 jar 中的 src 文件夹中。我已将该文件放在一个名为的打包文件中,files并且我正在使用的所有其他文件(例如图片)都在该包中,并且它们都可以正常工作。我播放声音的方法在这里:

public static void playSound(String dir, int loopTimes) throws Exception {
    URL url = new File(dir).toURI().toURL();
    Clip clip = AudioSystem.getClip();
    // getAudioInputStream() also accepts a File or InputStream
    AudioInputStream ais = AudioSystem.getAudioInputStream(url);
    clip.open(ais);
    if (loopTimes == -1)
        loopTimes = Clip.LOOP_CONTINUOUSLY;
    clip.loop(loopTimes);
    SwingUtilities.invokeLater(new Runnable() {
        public void run() {

        }
    });
}

它适用于在我的桌面、文档或其他任何地方播放声音。我为播放声音输入的路径是"files/FBP.wav"FBP 是文件的名称。我无法在谷歌上找到任何解决方案,我觉得这是因为它在 JAR 中。我也只是简单地尝试了这个:

if(new File("files/FBP.wav").exists()){
        System.out.println("EXISTS!");
    }
    System.exit(0);

它从来没有打印出它存在。我已经确保它也在 bin 文件夹中。我正在使用日食。我得到的错误是filenotfoundexception。任何帮助表示赞赏!提前致谢!

4

1 回答 1

2

代替:

URL url = new File(dir).toURI().toURL();

和:

URL url = MySoundClassName.class.getClassLoader().getResource(dir);

或者对于非静态方法:

URL url = getClass().getClassLoader().getResource(dir);
于 2012-11-04T03:17:01.540 回答