音乐无法在.JAR文件中播放

时间:2018-06-21 13:20:30

标签: java jar fxml embedded-resource javasound

我正在尝试打开.JAR文件时播放歌曲。在Netbeans中它可以正常工作,但是在打开.Jar文件时,仅显示用于场景更改的按钮以及这些场景上的图像。

在FXML的控制器中,我已经初始化了一个用于播放歌曲的线程:

https://outlook.office.com/api/beta/me/calendars/{calendar_id}/events

这将调用具有播放歌曲的线程的类:

@Override
public void initialize(URL url, ResourceBundle rb) {
    PlaySong ps = new PlaySong();
    Thread thread = new Thread(ps);
    thread.start();

} 

我的目的是在通过initialize方法打开FXML时开始播放歌曲。

希望你们能提供帮助。

3 个答案:

答案 0 :(得分:0)

您的音乐文件应位于项目的“ src”文件中,以便在JAR中进行部署。并且您应该使用“ getResourceAsStream()”来获取声音文件。

答案 1 :(得分:0)

当您从IDE启动应用程序时,您可以访问src文件,因为JVM执行路径是您的项目文件夹。

因此,您将了解,在jar中,您没有项目。在Jar中,执行路径是包含jar的文件夹,您将同意,即使是手动操作,在此文件夹中也找不到src文件夹?

您需要将音乐曲目视为资源而不是文件。我建议您阅读:Location-Independent Access to Resources

但是在您的情况下:

SomeClass.class.getResourceAsStream("relativePathfromSomeClasstoyourwavFile");

答案 2 :(得分:0)

Duplicate?

OS文件系统不会“看到” jar文件。请改用URL。

通常使用相对寻址方案,并将音频放置在某种资源文件夹中。但是您也可以将音频与调用它的类放在同一文件中。或使用“绝对”地址引用项目的根目录(地址以char“ /”开头)。您的选择。

上面的“ duplicate”标记具有代码示例。