多次播放后,Java中的.wav文件无法播放

3

我有一个.wav文件需要播放。我正在使用以下代码:

public static synchronized void play(String path) {     
    try {
        URL soundUrl = SoundTools.class.getResource(path);
        AudioInputStream stream = AudioSystem.getAudioInputStream(soundUrl);
        AudioFormat format = stream.getFormat();
        DataLine.Info info = new DataLine.Info(Clip.class, format);
        Clip clip = (Clip) AudioSystem.getLine(info);
        clip.open(stream);
        clip.start();
    }
    catch (Exception e) {
        System.out.println(e.getMessage());
        e.printStackTrace();
    }
}

代码运行一段时间后表现良好,但大约播放30次后,出现了javax.sound.sampled.LineUnavailableException。错误信息显示无法获取线路unable to obtain a line。我认为这与系统资源有关,但我不知道该如何解决它。


@Marv 我同意,它们看起来很相似,但我的错误信息显示为“无法获取一行”,而他的错误是“带格式的行…” - Jerfov2
1个回答

2
您从未关闭“Clip”,它是“Line”的子类,因此您会收到此错误。使用"close"方法关闭clip后,确保您在使用完毕后将其关闭(这样可以释放资源),如下所示:
clip.close();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接