当我创建maven项目的jar包时,该程序不再找到我的媒体文件。我从Google找到了几个类似的问题,但没有一个对我有帮助。
我已经尝试了所有这些选项:
// 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");
Media media = new Media(Paths.get("src/main/resources/music/music.mp3").toUri().toString());
Media media = new Media(Audio.class.getResource("/music.mp3").toString());
InputStream in = Audio.class.getResourceAsStream("/music.mp3");
Media media = new Media(new InputStreamReader(in).toString());
InputStream in = Audio.class.getClassLoader().getResourceAsStream("/music.mp3");
Media media = new Media(new InputStreamReader(in).toString());
我的示例中的Audio类是一个抽象类,它通过静态方法和变量来处理所有事情。我正在使用Java 11。
编辑:为示例添加了正确的路径。
我能够使用以下路径修复它:
Media media = new Media(Audio.class.getResource("/music/music.mp3").toString());
由于我的文件位于资源文件夹中的“音乐”文件夹中,所以我也必须包含它。另请注意,“ music / music.mp3”不起作用,它需要在其前面加上斜杠。这很令人困惑,因为在将图像添加到项目时,它不需要斜杠。
感谢@fabian解释了为什么我的方法不起作用。