0
我在jar文件中的classpath中遇到問題。有圖片
getClass().getResource("picture.png")
工作正常。但我需要得到一個mp3文件。
如果我把整個路徑放在jar文件的外面,它工作得很好,但是如果我嘗試它
沒有像getClass().getResource("picture.png")
這樣的完整路徑,它會顯示「找不到文件」。 因此,我正在尋找song.mp3路徑的解決方案,以便如果構建.jar並在另一臺計算機上打開它,該歌曲仍會播放。如何從jar文件中獲取mp3的類路徑
這是我的代碼:
package bgmusic;
import java.io.*;
import javax.media.Format;
import javax.media.Manager;
import javax.media.MediaLocator;
import javax.media.Player;
import javax.media.PlugInManager;
import javax.media.format.AudioFormat;
public class Bgmusic {
public static void main(String[] args) {
Format input1 = new AudioFormat(AudioFormat.MPEGLAYER3);
Format input2 = new AudioFormat(AudioFormat.MPEG);
Format output = new AudioFormat(AudioFormat.LINEAR);
PlugInManager.addPlugIn(
"com.sun.media.codec.audio.mp3.JavaDecoder",
new Format[]{input1, input2},
new Format[]{output},
PlugInManager.CODEC
);
try{
Player player = Manager.createPlayer(new MediaLocator(new File("song.mp3").toURI().toURL()));
player.start();
}
catch(Exception ex){
ex.printStackTrace();
}
}
}
當我嘗試,我似乎得到一個錯誤預期 如果我嘗試 InputStream是; is = this.getClass()。getResourceAsStream。(「/ song.mp3」); 我怎麼把它放在播放器中? –
Henk
道歉,你應該在這種情況下使用getResource而不是getResourceAsStream。 getResource返回一個可直接與MediaLocator一起使用的URL – greedybuddha
Im獲取非靜態變量現在不能從靜態上下文中引用: InputStream is; is = this.getClass()。getResource(「/ song.mp3」); – Henk