Java でボタン クリック時にサウンドを再生する際にエラーが発生しました。ボタンのフィールドがあり、いずれかのボタンが押されると、アプリケーションがサウンドを再生します。しかし、アプリケーションは例外をスローします:
javax.sound.sampled.LineUnavailableException: unable to obtain a line
メソッドは次のようになり、ボタンが押されたときに呼び出されます。
public void playSound() {
try {
File file = new File("Sounds/sound.wav");
AudioInputStream hitStream = AudioSystem.getAudioInputStream(file);
AudioFormat format = hitStream.getFormat();
DataLine.Info info = new DataLine.Info(Clip.class, format);
Clip clip = (Clip) AudioSystem.getLine(info);
clip.open(hitStream);
clip.start();
} catch (Exception e) {
e.printStackTrace();
}
}
最初にサウンドが再生され、その後クラッシュします。例外をグーグルで調べたところ、サウンドの再生後にクリップを閉じる必要があることがわかりました。clip.start()の後に行を追加する必要があると思いました
if (!clip.isRunning()) {
clip.stop();
clip.close();
}
しかし、サウンドが再生されず、アプリケーション全体が遅れ始めます。このエラーの正しい解決策は何ですか?