Javafx MediaException:MEDIA_UNAVAILABLE jar文件

问题描述 投票:0回答:1

当我创建maven项目的jar包时,该程序不再找到我的媒体文件。我从Google找到了几个类似的问题,但没有一个对我有帮助。

我已经尝试了所有这些选项:

  1. 文档库:在IDE上运行良好,jar包抛出MEDIA_UNAVAILABLE
// I get documentBase from the class which extends Application
String documentBase = Application.getHostServices().getDocumentBase();
Media media = new Media(documentBase + "src/main/resources/music/music.mp3");
  1. Paths.get:在IDE上工作正常,jar包抛出MEDIA_UNAVAILABLE
Media media = new Media(Paths.get("src/main/resources/music/music.mp3").toUri().toString());
  1. 获取资源:抛出空
Media media = new Media(Audio.class.getResource("/music.mp3").toString());
  1. Inputstream:抛出null
InputStream in = Audio.class.getResourceAsStream("/music.mp3");
Media media = new Media(new InputStreamReader(in).toString());
  1. 带有getClassLoader()的Inputstream:引发null
InputStream in = Audio.class.getClassLoader().getResourceAsStream("/music.mp3");
Media media = new Media(new InputStreamReader(in).toString());

我的示例中的Audio类是一个抽象类,它通过静态方法和变量来处理所有事情。我正在使用Java 11。

编辑:为示例添加了正确的路径。

javafx jar media
1个回答
0
投票

我能够使用以下路径修复它:

Media media = new Media(Audio.class.getResource("/music/music.mp3").toString());

由于我的文件位于资源文件夹中的“音乐”文件夹中,所以我也必须包含它。另请注意,“ music / music.mp3”不起作用,它需要在其前面加上斜杠。这很令人困惑,因为在将图像添加到项目时,它不需要斜杠。

感谢@fabian解释了为什么我的方法不起作用。

© www.soinside.com 2019 - 2024. All rights reserved.