使用记事本在java中播放.mp3文件

use*_*009 5 java mp3 javafx illegalargumentexception javafx-2

我知道这是一个重复的问题.在这里这里检查原始的.

所以我的代码只是复制粘贴:

import javafx.scene.media.*;

class Gui {
  public static void main(String[] args) {
    try{
        Media hit = new Media("skin.mp3");
        MediaPlayer mediaPlayer = new MediaPlayer(hit);
        mediaPlayer.play();
    }catch(Exception e){
        e.printStackTrace();
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我得到的例外是:

java.lang.IllegalArgumentException: uri.getScheme() == null!
        at com.sun.media.jfxmedia.locator.Locator.<init>(Locator.java:217)
        at javafx.scene.media.Media.<init>(Media.java:364)
        at Gui.main(gui.java:6)
Run Code Online (Sandbox Code Playgroud)

我正在编译和运行它,即通过jfxrt.jar在classpath中包含该文件

注意:我只是使用记事本而不是任何IDE.

所以任何人都可以告诉我原因 IllegalArgumentException

Thankx

更新:通过使用file://e:/skin.mp3它工作正常,但给我另一个例外:

MediaException: MEDIA_INACCESSIBLE : e
        at javafx.scene.media.Media.<init>(Unknown Source)
        at Gui.main(gui.java:6)
Run Code Online (Sandbox Code Playgroud)

所以如果你能对这个例外有所了解.

顺便说一句,我检查了这首歌,它没有腐败,因为它在vlc中播放得很好.

Mad*_*mer 5

来自JavaFX API文档

  • 提供的URI必须符合java.net.URI要求的RFC-2396.
  • 仅支持HTTP,FILE和JAR URI.

因此,我怀疑从阅读文档时,您需要提供URI路径.

类似的东西file://path/to/file/skin.mp3可能会起作用.

  • 要获得该URL,您可以执行`new File("skin.mp3").toURI().toString()` (2认同)