2012-10-28 43 views
2

我有一個mp3文件,我試圖從eclipse(java)中的源碼包中播放,因爲它播放良好,當我在eclipse中運行它時,但是當我嘗試從.jar播放它不會播放。這些圖像顯示了罰款,但聲音不,我想我可能要重新編碼等的圖像文件的聲音文件,但我不知道怎麼會在這裏是對圖像的代碼:如何從src播放java中的聲音文件

JLabel TextBox = new JLabel(new ImageIcon(Toolkit.getDefaultToolkit().getImage(getClass().getResource("/Images/TextBox.png")))); 

和聲音

Player player = Manager.createPlayer(new MediaLocator(getClass().getClassLoader().getResource("Sounds/Bonsai.mp3"))); 

在此先感謝!

+2

您是否驗證過該罐中存在的mp3?它位於jar中的哪個路徑中? – RonK

+2

是否有堆棧跟蹤? – case1352

回答

1

的:

getClass().getClassLoader().getResource(....) 

確實返回一個URL。但MediaLocator無法使用表單中的URL:file:/

我建議將文件從jar複製到「Temp」文件系統,然後從那裏流式傳輸。 您可以隨時在完成後將其刪除,如果需要的話。

+0

你的回答不正確。我每天從jar中使用getResourceAsStream檢索文件 – chrislhardin

+0

這不是我的觀點,據我所知,MediaLocator需要一個URL而不是流。 MediaLocator無法處理file:// URL。但是你的解決方案可以讓hubbardh測試。 – Frank

+0

@Frank - 閱讀javadoc - http://docs.oracle.com/javase/6/docs/api/java/lang/ClassLoader.html#getResource(java.lang.String) – RonK

1

嘗試獲取資源作爲流。您可以通過這種方式檢索文件。

InputStream fis = 
    ClassLoader.getSystemClassLoader().getResourceAsStream("/Sounds/bonsai.mp3"); 
p = new Player(fis); 
p.play();