2013-03-27 46 views
4

只有一個Media -class的構造函數:public Media(java.lang.String source)看到http://docs.oracle.com/javafx/2/api/javafx/scene/media/Media.html#Media%28java.lang.String%29媒體:播放WAV文件內部的JAR

此構造得到一個URI作爲字符串。我有一個JavaFX項目,並在該項目中放置了一個WAV文件。當我將項目部署爲JAR時,我可以看到(例如使用7-Zip),WAV文件也被導出。這是沒有問題得到與

MyApplicationClass.class.getResourceAsStream("/resources/test.wav"). 

但內容什麼是正確的URI指部署的JAR這裏面WAV文件的Media構造?該URI

new Media("jar:.!/resources/test.wav") 

不工作。 URI "jar:resources/test.wav"也失敗(因爲沒有對JAR文件的引用)。

有沒有人有關於正確的URI的想法?

回答

7

試試這個

new Media(MyApplicationClass.class.getResource("/resources/test.wav").toURI().toString()) 

媒體接受罐子的URI所以它應該工作正常

+1

謝謝! 'ViMu.class.getResource(「/ audio/click_track_a.wav」)toURI()。toString()'給出了一個正確的URI'jar:file:/ C:Users/oliver/Desktop/vimu.jar!audio/click_track_a .wav'和'Media'對象正確創建,因爲沒有'MEDIA UNAVAILABLE'。但通過使用'MediaPlayer'播放,我不能在這裏。使用URI'file:/ D:/ Workspace/vimu/bin/audio/click_track_a.wav'我可以在這裏。 – Vertex 2013-03-27 15:27:46

+0

這是使用JMF: URL url = ViMu.class.getResource(「/ audio/click_track_a.wav」); URLDataSource uds = new URLDataSource(url); uds.connect(); Player player = Manager.createPlayer(uds); http://stackoverflow.com/questions/8304940/how-to-load-media-resources-from-the-classpath-in-jmf – 2013-03-27 15:46:22

+0

好的,謝謝。我會考慮JMF,希望JavaFX'Media'將來可以接受任意的InputStream。 – Vertex 2013-03-27 17:43:27