Как я могу воспроизвести mp3-файл в JavaFX, используя MediaPlayer? - PullRequest
0 голосов
/ 09 января 2019

Я пробовал так:

@FXML
void playButtonFunction() throws URISyntaxException {
    final int selectedIdx = listView.getSelectionModel().getSelectedIndex();
    if (selectedIdx != -1) {
        Media pick = new Media("file:%2F%2F" + arrayList.get(selectedIdx).getPath().replaceAll(" ","%20")); // replace this with your own audio file
        mediaPlayer = new MediaPlayer(pick);
        mediaPlayer.play();
    }
}

но я получил java.lang.IllegalArgumentException:

Exception in thread "Thread-5" java.lang.IllegalArgumentException: URI is not hierarchical
at java.io.File.<init>(File.java:418)
at com.sun.media.jfxmedia.locator.ConnectionHolder$FileConnectionHolder.openFile(ConnectionHolder.java:216)
at com.sun.media.jfxmedia.locator.ConnectionHolder$FileConnectionHolder.<init>(ConnectionHolder.java:175)
at com.sun.media.jfxmedia.locator.ConnectionHolder.createFileConnectionHolder(ConnectionHolder.java:62)
at com.sun.media.jfxmedia.locator.Locator.createConnectionHolder(Locator.java:600)
at com.sun.media.jfxmediaimpl.MetadataParserImpl.run(MetadataParserImpl.java:102)

Также я пытался с файловым объектом:

File file = new File(arrayList.get(selectedIdx).getPath());
Media pick = new Media(ClassLoader.getSystemResource(file.getName()).toExternalForm());
mediaPlayer = new MediaPlayer(pick);
mediaPlayer.play();

но потом я получил

java.lang.reflect.InvocationTargetException

и я не знаю, как я мог это отладить.

...