2014-12-15 3 views
3

재생하려고하는 .wav 파일이 있습니다. 나는이 코드를 사용하고 있습니다 :여러 재생 후 java .wav 재생이 실패합니다.

public static synchronized void play(String path) {  
    try { 
     URL soundUrl = SoundTools.class.getResource(path); 
     AudioInputStream stream = AudioSystem.getAudioInputStream(soundUrl); 
     AudioFormat format = stream.getFormat(); 
     DataLine.Info info = new DataLine.Info(Clip.class, format); 
     Clip clip = (Clip) AudioSystem.getLine(info); 
     clip.open(stream); 
     clip.start(); 
    } 
    catch (Exception e) { 
     System.out.println(e.getMessage()); 
     e.printStackTrace(); 
    } 
} 

코드는 잠시 동안 잘 작동을하지만, 30 플레이 후, 나는 javax.sound.sampled.LineUnavailableException를 얻을. 오류 메시지는 unable to obtain a line입니다. 나는 이것이 시스템 자원과 관련이 있다고 믿지만, 어떻게 해결할 지 모르겠습니다.

+0

가능한 중복처럼 close 방법 (당신은 자원을 확보 할 수있는 방법)을 사용하여 수행되면 클립을 닫습니다 [javax.sound.sampled.LineUnavailableException가 : 무엇 내가이 예외를 얻고있다] (HTTP를 : //stackoverflow.com/questions/15852254/javax-sound-sampled-lineunavailableexception-what-am-i-getting-this-exception) – Marv

+0

@Marv 나는 동의한다, 그들은 비슷하게 보일 것이다. 그러나 나의 오류 메시지는'얻을 수 없다. 그의 오류는'형식과 일치하는 줄 ... ' – Jerfov2

답변

2

Line의 서브 클래스 인 Clip을 절대로 닫지 않으므로이 오류가 발생합니다. 당신이

clip.close();