2014-05-09 2 views
0

터미널 인터페이스에서 사운드를 재생해야하는 프로그램이 있습니다.이클립스에서 파일을 찾았지만 터미널에서 .jar를 실행할 때 찾지 못했습니다.

코드는 매우 간단하고 여기있다 :

public static synchronized void playSound() { 
    new Thread(new Runnable() { 
     public void run() { 
      File _file = new File("music/sound.wav"); 

      try (AudioInputStream _audio = AudioSystem 
        .getAudioInputStream(_file)) { 
       Clip _clip = AudioSystem.getClip(); 
       _clip.open(_audio); 
       _clip.start(); 
      } catch ([…] e) { 
       // […] 
      } 
     } 
    }).start();   
} 

파일 내 소스 경로에있는 음악 폴더에 있습니다.

이클립스에서 프로그램을 실행할 때 모든 것이 완벽하게 작동합니다. 그러나 나는 .jar 파일에 내보낼 나는이 메시지가 CMD 창에서 그것을 시도하는 경우 :

java.io.FileNotFoundException: music\sound.wav (The system cannot find the path specified) 

[편집] 오디오 파일이 실제로 .JAR로 포장되어 있지만, 그것은 여전히 ​​작동하지 않습니다 .

Windows 프롬프트에서 사운드를 재생할 수 있습니까? 그렇지 않다면 거기에 있습니까?

감사합니다, SilverDuck 파일이 jar 파일에 패키지화됩니다

+0

어디에서이 음악 폴더를 실행하고 있습니까? –

+0

당신의 문제는 상대적인 파일 경로'music/sound.wav'입니다. 상상할 수 있습니다. 항아리를 만들었 으면 항아리에 오디오 파일을 포함시키지 않았습니다. 물론 필요한 리소스로 항아리를 만들 수도 있지만 응용 프로그램에서 파일 경로를 입력으로 받아들이는 것이 어떻겠습니까? 그런 다음 항아리를 실행할 때 전체 경로를 제공 할 수 있으며 파일을 선택할 수 있습니다. 이렇게하면 제공 한 파일을 재생할 수 있습니다. –

+0

음악 폴더가 jar 파일에 번들로 제공되므로 이해가 안됩니다. 번들을 사용하지 않을 때 경로가 존재하지 않는다는 다른 오류가 있습니다. –

답변

0

, 그것은 더 이상 파일입니다. 자원으로 읽어야합니다. 하나 봅니다이

InputStream inputStream = this.getClass().getResourceAsStream("music/sound.wav"); 
try (AudioInputStream _audio = AudioSystem.getAudioInputStream(inputStream)) { 
+0

예, 이미했으나 여전히 작동하지 않습니다. zip 관리자를 사용하여 .jar 파일을 열면 파일이 있어야 함을 알 수 있습니다. –

+0

리소스로 읽으십시오. – Keerthivasan

+0

예, 감사했습니다. –

관련 문제