实例化javafx Media对象时,为什么会引发IllegalArgumentException?

问题描述

我正在用Java编写游戏,并且在我创建的名为“音频”的类中使用Media和MediaPlayer类来播放.mp3文件。这是我的代码

Main类的相关部分:

Audio audio = new Audio(audioPath + "oxygen-theme-song.mp3");
audio.play();

音频类:

import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javafx.util.Duration;

public class Audio {
    private Media audio;
    private MediaPlayer audioPlayer;
    
    public Audio(String audioPath) {
        audio = new Media(audioPath);
        audioPlayer = new MediaPlayer(audio);
    }
    
    public void play() {
        audioPlayer.play();
    }
    
    public void stop() {
        audioPlayer.pause();
        audioPlayer.setStartTime(Duration.ZERO);
    }
}

这将引发以下异常:

Exception in thread "main" java.lang.IllegalArgumentException: uri.getScheme() == null! uri == 'Sound-Effects/oxygen-theme-song.mp3'
    at javafx.media/com.sun.media.jfxmedia.locator.Locator.<init>(Locator.java:218)
    at javafx.media/javafx.scene.media.Media.<init>(Media.java:393)
    at primecubed.oxygen.Audio.<init>(Audio.java:12)
    at primecubed.oxygen.Main.main(Main.java:118)

.mp3文件确实存在于正确的位置,因此我无法想到抛出此错误的原因。有人可以帮忙吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)