【问题标题】:My .jar file won't open MP3 files (I'm using Jlayer - JZoom library)我的 .jar 文件无法打开 MP3 文件(我正在使用 Jlayer - JZoom 库)
【发布时间】:2015-08-05 06:31:34
【问题描述】:

我做了这个小型 Java 项目,它又打开了不同的 MP3 文件。为此,我下载了 JLayer 1.0.1 库并将其添加到我的项目中。我还将 MP3 文件以及一些 JPG 图像添加到我的项目的一个包中,以便从那里获取它们,我正在使用 hashmap (mapa) 和这种方法来获取它们:

public static String consiguePath (int i) {


return AppUtils.class.getClass().getResource("/Movimiento/" + mapa.get(i)).getPath();

}

避免使用绝对路径。

当我打开一个 MP3 文件时,我会这样做:

try {
                            File archivo = new File(AppUtils.consiguePath(12));
                            FileInputStream fis = new FileInputStream(archivo);
                            BufferedInputStream bis = new BufferedInputStream(fis);
                            try {
                                Player player = new Player(bis);
                                player.play();
                            } catch (JavaLayerException jle) {
                            }
                        } catch (IOException e) {
                        }

整个事情在 NetBeans 中运行完美,但是当我构建一个 .jar 文件并执行它时,它运行良好,但它不会打开 MP3 文件。引起我注意的是,它在打开同一个包中的 JPG 文件时没有问题。

生成 .jar 后,我检查了 MyProject/build/classes/Movimiento 文件夹,所有 MP3 文件实际上都在那里,所以我不知道会发生什么。

我以前见过其他人有这个问题,但我还没有看到任何令人满意的答案。

谢谢!

【问题讨论】:

  • 返回 AppUtils.class.getClass().getResource 的结果 URL 而不是 String 文件,资源嵌入在您的 jar 文件中,无法再使用 File 访问
  • 太棒了,它成功了!非常感谢!

标签: java audio jar mp3 jlayer


【解决方案1】:

更改consiguePath 以从getResource 返回结果URL

public static URL consiguePath(int i) {

    return AppUtils.class.getClass().getResource("/Movimiento/" + mapa.get(i));

}

然后使用它的InputStream 传递给Player

try {
    URL url = AppUtils.consiguePath(12);
    Player player = new Player(url.openStream());
    player.play();
} catch (JavaLayerException | IOException e) {
    e.printStackTrace();
}

同样,你可以使用Class#getResourceAsStream

资源被打包到你的Jar文件中,不能再被视为Files

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-16
    • 1970-01-01
    • 1970-01-01
    • 2016-04-12
    • 2014-11-23
    • 1970-01-01
    相关资源
    最近更新 更多