I'm trying to play a small MP3 file or two using JavaFX, trying with MediaPlayer and AudioClip but getting an exception in each case. Some kind of compatibility issue?
Technology stack (1) Windows 10 home (2) Java 8 update 211 (3) Java SE Development kit 13.0.1 (4) JavaFX 11.0.2.
Exception reported :
(1) MediaPlayer (when I create a new Media object)
Exception in thread "JavaFX Application Thread" java.lang.IllegalAccessError: class com.sun.media.jfxmediaimpl.NativeMediaManager (in unnamed module @0x30696d74) cannot access class com.sun.glass.utils.NativeLibLoader (in module javafx.graphics) because module javafx.graphics does not export com.sun.glass.utils to unnamed module @0x30696d74
(2) AudioClip (when I create a new AudioClip object)
Exception in thread "JavaFX Application Thread" java.lang.IllegalAccessError: class com.sun.media.jfxmediaimpl.NativeMediaManager (in unnamed module @0x403bc23b) cannot access class com.sun.glass.utils.NativeLibLoader (in module javafx.graphics) because module javafx.graphics does not export com.sun.glass.utils to unnamed module @0x403bc23b
Code listing :
// play a sound clip using Media
private void playMedia1() {
fullFileName = "short.mp3";
if (checkFileExists(fullFileName)) {
File f = new File(fullFileName);
System.out.println("File URI : " + f.toURI().toString());
Media media = new Media(f.toURI().toString());
MediaPlayer mplayer = new MediaPlayer(media);
mplayer.setAutoPlay(true);
} else {
System.out.printf("File %s not found%n", fullFileName);
}
}
// play a sound clip using AudioClip
private void playMedia2() {
fullFileName = "short.mp3";
if (checkFileExists(fullFileName)) {
File f = new File(fullFileName);
System.out.println("File URI : " + f.toURI().toString());
AudioClip clip1 = new AudioClip(f.toURI().toString());
clip1.play();
} else {
System.out.printf("File %s not found%n", fullFileName);
}
}
// test we can open the specified file
private boolean checkFileExists(String filename) {
File f = new File(filename);
return f.exists();
}