2014-12-07 111 views
0

我在用Eclipse編寫的小精靈遊戲中使用了很多聲音和圖片文件。一切都在Eclipse中完美運行,但是當我將它作爲可運行jar導出時,我遇到了一個錯誤,當我嘗試運行它時媒體不可用。在Eclipse的可運行jar文件中包含圖片和聲音文件

這是我使用的播放MP3文件的代碼:

File file = new File("src/pokemon/mp3s/opening.mp3"); 
    final String mediaLocation = file.toURI().toURL().toExternalForm(); 
    Media media = new Media(mediaLocation); 
    mp = new MediaPlayer(media); 

導出爲一個可運行罐子後,我用java執行它的罐子Pokemon2.jar和得到這個錯誤信息:

異常在線程「主要」 MediaException:MEDIA_UNAVAILABLE:C:\用戶\尼克\桌面\ SRC \口袋妖怪\的MP3 \ opening.mp3 系統找不到指定

如何讓我的運行的JAR是路徑能夠找到這些額外的資源?

+0

可能重複[?如何從Java中的jar讀取文件(http://stackoverflow.com/questions/3369794/how-to-a-read-file-from- jar-in-java) – Qix 2014-12-07 21:29:57

回答

1

部署的jar文件不包含源文件或src文件夾。 它是你的IDE編譯源文件並將它們放在其他地方(例如,在build \ classes中的netbeans中)。當你部署你的項目時,你的mp3文件將出現在該jar文件中,而不是在src文件夾中。

你應該嘗試另一種方法。
假設你的文件存在於的src /口袋妖怪/ MP3音樂/ opening.mp3
和類的src /口袋妖怪存在/ Referer.java

現在,你可以通過Referer訪問您的文件mp3類作爲參考:的

URL fileUrl = Referer.class.getResource("mp3s/opening.mp3"); 
+0

它的工作原理!感謝您的幫助! – NDops 2014-12-07 22:16:30

1

jar中的文件不能作爲常規文件訪問。相反,你必須使用getResource來訪問它們,當它們在罐子裏時,它們就可以工作。

getClass().getResource("/pokemon/mp3s/opening.mp3"); 
+0

介意解釋爲什麼你的答案是解決方案重刑? – Qix 2014-12-07 21:35:29

+0

@Qix好的,做到了。 – clum 2014-12-07 21:40:49

相關問題