Java MediaPlayer不是';行不通

Java MediaPlayer不是';行不通,java,javafx,mp3,Java,Javafx,Mp3,如何使用MediaPlayer播放m4a文件? 这是我的代码: public void audioPlayerButtons(ActionEvent actionEvent) { String bip = "Songs/01 Clarity.m4a"; Media hit = new Media(bip); MediaPlayer mediaPlayer = new MediaPlayer(hit); if (actionEvent.ge

如何使用MediaPlayer播放m4a文件? 这是我的代码:

public void audioPlayerButtons(ActionEvent actionEvent) {
       String bip = "Songs/01 Clarity.m4a";
       Media hit = new Media(bip);
       MediaPlayer mediaPlayer = new MediaPlayer(hit);

       if (actionEvent.getSource() == playbtn) {
           mediaPlayer.play();

       } else if (actionEvent.getSource() == pausebtn) {
           mediaPlayer.pause();

       } else if (actionEvent.getSource() == forwardbtn) {
           mediaPlayer.stop();

       } else if (actionEvent.getSource() == backwardbtn) {
           mediaPlayer.isAutoPlay();
       }
但它抛出了一个错误:

Exception in thread "JavaFX Application Thread" java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
    at javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1762)
    at javafx.fxml.FXMLLoader$ControllerMethodEventHandler.handle(FXMLLoader.java:1645)
    at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)
你能帮我理解为什么吗

基本上,我的目标是使用mediaPlayer制作mp3播放器,具体如下:

源必须表示有效的URI,并且是不可变的。只有HTTP, 支持文件和JAR URL。如果提供的URL无效,则 将引发异常

您提供的值(
“Songs/01 Clarity.m4a”
)当然不是有效的URI,因为它有空格

你需要像这样的东西

String bip = getClass().getResource("Songs/01 Clarity.m4a").toExternalForm();
(这将尝试查找与当前类相关的歌曲,如果您打算将m4a文件与应用程序捆绑在一起,这将非常有用),或者

它将查找文件系统中相对于工作目录的文件

无论哪种情况,您都可能需要更改路径以使其正确

String bip = new File("Songs/01 Clarity.m4a").toURI().toString();