2013-07-31 29 views
0

聲音,當我運行JAR不玩了,但它確實當我在Eclipse中運行它。音頻不會在罐發揮,但確實在Eclipse

這裏就是我加載剪輯:

public void init(){ 
    System.out.println("grabbing Music"); 
    String currentDir = new File("").getAbsolutePath(); 
    name=new File(currentDir+"\\music\\").list(); 
    clip=new Clip[name.length]; 
    soundFile=new File[name.length]; 
    for(int x=0;x<name.length;x++){ 
     System.out.println(currentDir+"\\music\\"+name[x]); 
     try { 
      soundFile[x]= new File(currentDir+"\\music\\"+name[x]); 
      AudioInputStream sound = AudioSystem.getAudioInputStream(soundFile[x]); 
      DataLine.Info info= new DataLine.Info(Clip.class, sound.getFormat()); 
      clip[x] = (Clip) AudioSystem.getLine(info); 
      clip[x].open(sound); 
      clip[x].addLineListener(new LineListener(){ 
       public void update(LineEvent event) { 
        if (event.getType() == LineEvent.Type.STOP) { 
         event.getLine().close(); 
        } 
       } 
      }); 
     } catch (LineUnavailableException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } catch (UnsupportedAudioFileException e) { 
      e.printStackTrace(); 
     } 
    } 

} 

在Eclipse中運行它時我沒有得到任何錯誤。不應該有一個無效的目錄錯誤的可能性,所以什麼是錯的?

- 當瓶子在CMD運行我沒有得到任何錯誤。

編輯:我覺得我加載音頻錯誤的,因此爲什麼我貼我用來加載的文件中的代碼在我的搜索我還沒有看到任何人使用文件的聲音文件中加載。不知道這是否是問題?

是進入我的腦海
+0

請打印堆棧跟蹤。 – Azad

+0

沒有錯誤引發。它只是不玩。 – lifedistroy

+0

你如何檢查錯誤? –

回答

1

第一件事情是你沒有連接你的聲音類庫到您的罐子。

+0

+你捕獲錯誤,因此應用程序不會崩潰 – bas

+0

很抱歉,但我是新來的Java和真的不明白你的「連接你的聲音類庫到您的罐子」不應該通過自動日食做是什麼意思? +沒有錯誤拋出,如果錯誤被拋出,我會在CMD中看到它們。 – lifedistroy

1

爲了運行當前的代碼,該文件夾music應在JAR文件位於同一文件夾中。

另一個解決方案是打包music文件夾中的JAR文件中,然後更改您的代碼:

InputStream is = getClass().getResourceAsStream("/music/" + name[x]); 
AudioInputStream sound = AudioSystem.getAudioInputStream(is); 
+0

該文件夾與我的jar文件位於同一目錄中。我會嘗試你建議的代碼。希望它有效! – lifedistroy

+0

當我使用你的代碼它不起作用。引發IOExeception:標記/重置不受支持 – lifedistroy

1

如何關於我們 -

  1. 右鍵點擊Eclipse中的項目。然後新建 - >源文件夾。
  2. 將源文件夾命名爲任何東西。例如music_src。
  3. 複製或拖動music_src中的整個音樂目錄。然後製作罐子。
0

文件系統也很難尋找到罐子。 請嘗試使用URL。一個URL可以在jar中找到一個位置。對於第一次嘗試訪問罐中資源的人來說,這種情況發生了很多。 否則的東西看起來不錯。