Media和MediaPlayer在JavaFX中不起作用

时间:2019-12-16 20:17:09

标签: java javafx

Media和MediaPlayer似乎无法在我的计算机上运行...每当遇到某种错误时,我都尝试过不同的使用方式...我对JavaFX和编程一般还是陌生的,因此这可能是我不了解的一些愚蠢错误(可能是)。 当我在JavaFX中使用这种使用声音的方法时:

public class MainSound extends Application {

    @Override
    public void start(Stage primaryStage) throws Exception {

        Media pick = new Media("correctGuess.mp3");
        MediaPlayer player = new MediaPlayer(pick);

        MediaView mediaView = new MediaView(player);

        Group root = new Group(mediaView);
        Scene scene = new Scene(root, 500, 200);

        primaryStage.setTitle("Media Player");
        primaryStage.setScene(scene);
        primaryStage.show();

        player.play();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

我说了一个错误:

  

应用程序启动方法异常

     

由以下原因引起:java.lang.RuntimeException:应用程序启动方法中的异常

     

原因:java.lang.IllegalArgumentException:uri.getScheme()== null! uri =='correctGuess.mp3'

然后,当我尝试其他方法时,像这样:

final java.net.URL resource = getClass().getResource("correctGuess.mp3");
final Media media = new Media(resource.toString());
final MediaPlayer mediaPlayer = new MediaPlayer(media);
mediaPlayer.play();

我说了一个错误:

  

线程“ JavaFX Application Thread”中的异常java.lang.RuntimeException:java.lang.reflect.InvocationTargetException

     

由以下原因引起:java.lang.reflect.InvocationTargetException

     

原因:java.lang.NullPointerException

所以我决定再尝试一次,用另一种方法...

String correctGuessFile = "correctGuess.mp3";
Media correctGuessSound = new Media(new File(correctGuessFile).toURI().toString());
MediaPlayer mediaPlayer = new MediaPlayer(correctGuessSound);
mediaPlayer.play();

猜猜是什么...我看到一个错误。这次是这样的:

  

线程“ JavaFX Application Thread”中的异常java.lang.RuntimeException:java.lang.reflect.InvocationTargetException

     

由以下原因引起:java.lang.reflect.InvocationTargetException

     

原因:java.lang.IllegalAccessError:类com.sun.media.jfxmediaimpl.NativeMediaManager(在未命名模块@ 0x5b4477b1中)无法访问com.sun.glass.utils.NativeLibLoader类(在javafx.graphics模块中) javafx.graphics不会将com.sun.glass.utils导出到未命名的模块@ 0x5b4477b1

我正在使用作为库导入的IntelliJ,Java 13和JavaFX,并根据IntelliJ帮助的建议在“运行配置”窗口的“ VM选项”中手动键入。到目前为止,使用JavaFX一切都运行顺利。仅使用Media和MediaPlayer会出现此问题。

1 个答案:

答案 0 :(得分:0)

找不到文件。 试试这个:

在主路径中创建“歌曲”文件。 复制“ correctGuess.mp3”文件。

更改代码:

Media pick = new Media(new File("songs/correctGuess.mp3").toURI().toString());
MediaPlayer player = new MediaPlayer(pick);