我有一个问题,我希望你能帮助我。 有些人说我在做什么,所以你知道发生了什么事情:所以目前我正在试图编写一个软件,它可以播放一些音乐文件(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