0

내 앱에서 음악을 재생하려고했습니다. 하지만 내가 할 수있는, 내가 프로토콜 file://를 추가 할 때BigClip 문제

java.net.MalformedURLException: no protocol: java.io.BufferedInputStream 

, 나는이 NullPointerException를 얻을 : 만 title1.wav을 사용하면

try { 
     url = new URL(Sounds.class.getResourceAsStream("title1.wav").toString()); 
     } catch (MalformedURLException e2) { 
      // TODO Auto-generated catch block 
      e2.printStackTrace(); 
     } 
     BigClip clip = new BigClip(); 
     AudioInputStream ais = null; 
     try { 
      ais = AudioSystem.getAudioInputStream(url); 
     } catch (UnsupportedAudioFileException e1) { 
      // TODO Auto-generated catch block 
      e1.printStackTrace(); 
     } catch (IOException e1) { 
      // TODO Auto-generated catch block 
      e1.printStackTrace(); 
     } 
     try { 
      clip.open(ais); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (LineUnavailableException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     clip.start(); 
     JOptionPane.showMessageDialog(null, "BigClip.start()"); 
     clip.loop(4); 
     JOptionPane.showMessageDialog(null, "BigClip.loop(4)"); 
     clip.setFastForward(true); 
     clip.loop(8); 
     // the looping/FF combo. reveals a bug.. 
     // there is a slight 'click' in the sound that should not be audible 
     JOptionPane.showMessageDialog(null, "Are you on speed?"); 
} 

, 나는이 오류가 : 나는 예를 BigClip 코드를 사용하고 그 원인을 알 수 없습니다.

잘못된 프로토콜을 사용하고 있습니까? 아니면 내가 잘못한 것을 했습니까? 미리 감사드립니다!

답변

0

파일을 가정하면 작동하지

url = Sounds.class.getResource("title1.wav"); 

new URL(Sounds.class.getResourceAsStream("title1.wav").toString()) 

때문에 단지 바인딩 사용, 사운드 클래스와 같은 패키지 ("디렉토리")에 있습니다. InputStream의 인스턴스에서 toString을 호출하고 있습니다. AudioSystem.getAudioInputStream 나쁜 URL 경로에 너무 ais가 null BigClipopen에서 NPE가 발생합니다 때문에 실패하기 때문에

NPE 아마 발생합니다.

+0

고맙습니다. 지금은 잘 작동합니다! BigClip이 오디오를 시작, 정지, 다시 시작하고, 계속 진행하고, 글리치하게 만드는 이유가 있습니까? –

+0

BigClip에 익숙하지 않습니다. @AndrewThompson [여기] (http://stackoverflow.com/a/9470886/2891664)의 의미 일 경우 새로운 질문을하고주의를 끌 수도 있습니다. (링크를 사용하여 답변 중 하나에 댓글을 올리거나 내가했던 것처럼 핑 (ping)하십시오.) 다른 사람이 대답 할 수는 있지만. – Radiodef