访问嵌入式资源时出错

时间:2012-11-04 03:08:27

标签: java audio io embedded-resource filenotfoundexception

我正在制作一个节目,我希望它在播放时开始播放声音。我认为最简单的方法是将.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文件夹中。我正在使用eclipse。我得到的错误是filenotfoundexception。任何帮助表示赞赏!提前谢谢!

1 个答案:

答案 0 :(得分:2)

替换:

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

使用:

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

或者对于非静态方法:

URL url = getClass().getClassLoader().getResource(dir);
相关问题