java關於Applet播放不出聲音的解決方案
整體環境:eclipse8+jdk1.8
在初學java的applet程式設計時,可能會遇到這樣的問題:音訊檔案無法播放出聲音,視訊檔案無法正常播放
在找了一段時間程式碼bug發現沒有任何錯誤後,你氣的大噴eclipse真垃圾,連個applet都不能正常播放,然後再diss applet早被淘汰了,為什麼還要用它!
(雖然applet差不多被淘汰是因為java有了更好的選擇,比如用JFrame能更好的實現applet功能,而且可以使用main函式作為程式入口,能和其他程式碼完美的搭配起來;
相比起來,applet只能放在網頁上執行,而且程式入口並不是main,再加上applet很難做出炫到滿天飛的UI,顯然現在applet毫無用武之地,但Java的播放音訊等功能還是放在appet類庫裡面的,所以你學了applet並不吃虧,可以很好的應用在JFrame上)
閒話少說,進入正題:
雖然你播放不出音樂,但是。。applet和eclipse表示並不背這個鍋——
先檢查一下你給的音訊檔案是不是.wav字尾,不是的話先下載個格式工廠之類的轉換軟體把它轉成.wav字尾
再看看你音訊檔案放的位置,要放在你所在的專案的bin目錄下(用eclipse直接執行),也就是applet的getCodeBase()方法輸出的url
具體做法:
我們可以看到getCodeBase返回了bin目錄下,那麼你就老老實實地把這個音訊檔案放在該目錄下。
像這樣就可以了。
解釋eclipse在執行applet時的操作:
我們可以看到在bin目錄下有個java.policy.applet的applet檔案,你可以開啟它看看,
發現是這樣:
它的作用是授予執行程式碼java的所有許可權。
這個檔案是你執行applet後產生的,原因是因為applet執行的安全級別要求比較高,所以要拓寬它的許可權。
除了這個applet檔案外,我們還可以看到出現了一個html檔案,這個檔案你可以開啟看看,如下:
很明顯,就是applet在瀏覽器上執行時藉助的html檔案
到這裡你應該差不多清楚了,當你在eclipse執行java applet時,首先eclipse會用javac編譯你所執行的java檔案(也就是src的.java檔案,在這裡假設為test.java檔案),然後得到一個test.class檔案,放在bin目錄裡,同時自產生一個html檔案,然後通過與瀏覽器互動把執行結果給顯示出來。
我們可以看到最終是要執行html檔案,所以你的資原始檔比如123.wav就必須要放到和html同目錄的地方,也就是bin目錄下。
那麼我們也可以知道在命令列怎麼執行applet:
先cmd進src目錄,然後javac test.java 得到一個有JVM編譯的class檔案,然後自己寫一個test.html檔案,把applet code = "test.class"設定好,然後cmd appletviewer test.html執行