大きなアプリケーションを実行している場合、この回答は適用されない場合があります。しかし、このコードだけの簡単なテストでは、はが助けます:
Clip.loop()は自身のスレッドを開始しますが、そのスレッドはJVMを存続させません。だから、それを機能させるには、クリップが唯一のスレッドでないことを確認してください。
このスニペットからThread.sleep(..)を除外すると、私と同じ問題が発生します。
import java.io.File;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
public class Snippet {
public static void main(String[] args) throws Exception {
AudioInputStream inputStream = AudioSystem.getAudioInputStream(new File("notify.wav"));
Clip clip = AudioSystem.getClip();
clip.open(inputStream);
clip.loop(Clip.LOOP_CONTINUOUSLY);
Thread.sleep(10000); // looping as long as this thread is alive
}
}
open()の前にloop()を実行しようとしましたか?私はそれを試していないが、それは動作する可能性があります。 –
私はちょうどここでそれを試して、それは動作するようだ...あなたはこのコードを覆しているはずですtryブロック内の任意の例外をキャッチですか? – Timst
こんにちは、私もこれを試して、それは動作します。最初のループの後にsomの例外がありますか? – hudi