2

我正在尝试用 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 对其进行了测试,它很好)。我正在使用带有 KDE 的 Eclipse Juno、openjdk-7 和 Fedora 17。

4

1 回答 1

2

几件事:

  1. clip.start 产生一个新线程在后台执行,当应用程序死掉时它就会死掉。开始剪辑后尝试睡觉。
  2. 开始后有必要向前寻求吗?这似乎只是一个额外的行。

尝试制作你的主要方法:

public static void main ( String[ ] args )
{
    new SoundBang( );
    Thread.sleep(2000); // Sleep 2 seconds
}
于 2012-08-23T20:42:16.130 回答