声音无法在JAR文件

时间:2015-08-16 17:06:23

标签: java netbeans jar

我遇到了问题,希望你能帮助我。 有些人谈论我正在做什么,所以你知道发生了什么:所以目前我正在尝试编写一个小软件,它可以播放一些音乐文件(确切地说是mp3文件,所以我正在使用jLayer API)。我正在与Netbeans合作,我已经成功地在项目中导入了一个音乐文件。如果我构建我的程序并使用存档程序打开生成的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启动程序,一切都运行得很好。但是,如果我创建一个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

1 个答案:

答案 0 :(得分:0)

我假设您有2个包1是您的.java文件所在的src,而其他是您的声音文件所在的资源

所以我建议你使用

MP3.play(getClass().getResourceAsStream("/angel.mp3"));

因为GetResource()会自动找到资源包