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会出现此问题。
答案 0 :(得分:0)
找不到文件。 试试这个:
在主路径中创建“歌曲”文件。 复制“ correctGuess.mp3”文件。
更改代码:
Media pick = new Media(new File("songs/correctGuess.mp3").toURI().toString());
MediaPlayer player = new MediaPlayer(pick);