在Java 7中播放声音

时间:2012-08-23 20:26:05

标签: java fedora javasound

我正在尝试用Java播放声音文件。我写了这段代码:

import java.io.File;
import java.io.IOException;

import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.UnsupportedAudioFileException;

public class SoundBang
{
    private File _file;
    private AudioInputStream _audio;
    private Clip _clip;

    public SoundBang( )
    {
        _file = new File( "file/sound/bang.wav" );

        try
        {
            _audio = AudioSystem.getAudioInputStream( _file );
            _clip = AudioSystem.getClip( );
            _clip.open( _audio );
            _clip.start( );
        }
        catch ( LineUnavailableException e )
        {
            e.printStackTrace( );
        }
        catch ( IOException e )
        {
            e.printStackTrace( );
        }
        catch ( UnsupportedAudioFileException e )
        {
            e.printStackTrace( );
        }
    }

    public static void main ( String[ ] args )
    {
        new SoundBang( );
    }
}

问题是我在运行此代码时听不到任何声音。

声音文件的URL是正确的(我通过打印绝对URL来测试它,它很好)。我正在使用Eclipse Juno,openjdk-7和Fedora 17与KDE。

1 个答案:

答案 0 :(得分:2)

夫妻俩:

  1. clip.start产生一个新的线程在后台执行,当应用程序死掉时它就会死掉。开始剪辑后尝试睡觉。
  2. 开始后是否有必要向前寻求?看起来这只是一条额外的线。
  3. 尝试制作主要方法:

    public static void main ( String[ ] args )
    {
        new SoundBang( );
        Thread.sleep(2000); // Sleep 2 seconds
    }