我有一個問題,我希望你能幫助我。 有些人說我在做什麼,所以你知道發生了什麼事情:所以目前我正在試圖編寫一個軟件,它可以播放一些音樂文件(mp3文件是確切的,所以我使用jLayer API)。我正在與Netbeans合作,並且我已經成功地在該項目中導入了一個音樂文件。如果我構建我的程序並用存檔程序打開生成的JAR文件,我可以在其中找到我的音樂文件。我的功能我使用的是這樣的:聲音無法播放JAR文件
public static String play(String file) {
File test = new File(file);
try {
FileInputStream in = new FileInputStream(test);
Player pl = new Player(in);
pl.play();
return "success";
}
catch (Exception e) {
return e.toString();
}
}
正如你可以看到我得到的路徑名稱的字符串和重構他,所以我可以播放文件。我打電話的功能,用下面的代碼(音樂文件被保存在ressources包):
MP3.play(getClass().getResource("/ressources/angel.mp3").getPath())
所以,如果我開始通過Netbeans的一切PROGRAMM工作完全正常。但是,如果我創建一個JAR文件並啓動程序,則什麼也不會發生。唯一的例外是得到下列:
java.io.FileNotFoundException: file:\C:\Users\Raphael\Documents\NetBeansProjects\MP3\dist\MP3.jar!\ressources\angel.mp3
它說文件不存在,但如果我檢查我的JAR文件是存在的......
我發現了另一個奇怪的是以下:如果我使用下面的函數來播放音樂文件:
public static String play(InputStream test) {
try {
Player pl = new Player(test);
pl.play();
return "success";
}
catch (Exception e) {
return e.toString();
}
}
並調用該函數具有以下參數:
MP3.play(getClass().getResourceAsStream("/ressources/angel.mp3"));
在Netbeans和最終的JAR中,一切正常。任何人都可以解釋我做錯了什麼,只有第二個函數可以在JAR版本中使用嗎?
如果你能在這件事情上幫助我,這將是非常好的。
問候, xXKnightRiderXx
我看到一個'MP3.jar!'在FileNotFoundExcep灰。文件的實際名稱是什麼? –
資源不是文件,不適用於FileInputStream或大多數文件相關的API。從jar中提取資源,然後在單獨的文件上使用FileInputStream,或者直接直接使用getResourceAsStream()。 – WillShackleford
@ILikeTau是啊你是對的有一個「!」在文件名中,這不是文件的實際名稱。但我已經嘗試刪除「!」在我進一步使用字符串之前,但這並沒有解決我的問題。 – xXKnightRiderXx