javax.sound.sampled.LineUnavailableException

时间:2015-01-06 06:25:33

标签: java audio javasound

我正在开发一个java项目,帮助人们了解地图中国家/地区的位置。

当鼠标经过一个对象并在Windows中完美运行时,程序播放.wav声音文件但是今天我在Ubuntu中试图这样做,程序抛出下一个异常:

javax.sound.sampled.LineUnavailableException:行格式为PCM_SIGNED 44100.0 Hz,16位,立体声,4字节/帧,不支持little-endian。

这是播放声音的方法。

public void playSound(String audioName){
    String path="src/audio/"+audioName+".wav";
    try{
        Clip sound=AudioSystem.getClip();
        sound.open(AudioSystem.getAudioInputStream(new File(path)));
        sound.start();            
    } catch(Exception e){
        JOptionPane.showMessageDialog(null,e);            
    }
}

有谁能告诉我如何解决这个问题?

我一直在寻找很多,但我没有找到一个明确的答案来帮助我。

我认为有一些重要的事情我没有说明......

当事件mouseEntered被触发时抛出我之前提到的异常,但这有点奇怪,因为程序乍一看没有任何问题。在我将鼠标移到某些对象上之后,在开始时正确再现的声音和异常被抛出。

1 个答案:

答案 0 :(得分:-1)

为什么不尝试获取文件并获取其绝对路径,然后将返回值存储为路径变量。然后,使用该路径获取音频输入流。但是,如果你处理了应用程序中文件格式的转换,那么抛出的异常可能根本不属于这个显示的片段。我建议(如果你做了额外的处理)在使用可用的线路之前检查支持的线路。这样就可以避免这样的错误。