JavaFX媒体播放器不工作

JavaFX媒体播放器不工作,java,linux,javafx,Java,Linux,Javafx,当我运行这段代码时,我得到两个异常。我已经正确安装了Java8,它是oracle版本(不是OpenJDK)。同样的代码工作正常,在使用Java 8的Windows上播放媒体时没有任何问题。我不想使用应用程序,因为我试图从更多(非JavaFX)代码中播放此媒体 这是我得到的一个例外 file:/home/chris/Music/jawstheme.mp3 Exception in thread "main" MediaException: UNKNOWN : com.sun.media.jfxme

当我运行这段代码时,我得到两个异常。我已经正确安装了Java8,它是oracle版本(不是OpenJDK)。同样的代码工作正常,在使用Java 8的Windows上播放媒体时没有任何问题。我不想使用应用程序,因为我试图从更多(非JavaFX)代码中播放此媒体

这是我得到的一个例外

file:/home/chris/Music/jawstheme.mp3
Exception in thread "main" MediaException: UNKNOWN : com.sun.media.jfxmedia.MediaException: Could not create player! : com.sun.media.jfxmedia.MediaException: Could not create player!
    at javafx.scene.media.MediaException.exceptionToMediaException(MediaException.java:146)
    at javafx.scene.media.MediaPlayer.init(MediaPlayer.java:511)
    at javafx.scene.media.MediaPlayer.<init>(MediaPlayer.java:414)
    at Test.main(Test.java:11)
Caused by: com.sun.media.jfxmedia.MediaException: Could not create player!
    at com.sun.media.jfxmediaimpl.NativeMediaManager.getPlayer(NativeMediaManager.java:222)
    at com.sun.media.jfxmedia.MediaManager.getPlayer(MediaManager.java:104)
    at javafx.scene.media.MediaPlayer.init(MediaPlayer.java:467)
    ... 2 more
文件:/home/chris/Music/jawstheme.mp3
线程“main”media异常:未知:com.sun.media.jfxmedia.media异常:无法创建播放机!:com.sun.media.jfxmedia.media异常:无法创建播放机!
位于javafx.scene.media.MediaException.exceptionToMediaException(MediaException.java:146)
位于javafx.scene.media.MediaPlayer.init(MediaPlayer.java:511)
位于javafx.scene.media.MediaPlayer。(MediaPlayer.java:414)
at Test.main(Test.java:11)
原因:com.sun.media.jfxmedia.media异常:无法创建播放机!
在com.sun.media.jfxmediainpl.NativeMediaManager.getPlayer上(NativeMediaManager.java:222)
在com.sun.media.jfxmedia.MediaManager.getPlayer上(MediaManager.java:104)
位于javafx.scene.media.MediaPlayer.init(MediaPlayer.java:467)
... 还有两个
一些建议:

  • 如果您使用的是Java 8,则不需要(也不应该)向类路径显式添加对jfxrt.jar的引用
  • 将完整的错误处理添加到应用程序中,如中所述
  • 您的代码存在线程问题-您应该在JavaFX应用程序线程上与JavaFX控件交互,请参阅
  • 使用JavaFX而不是JavaFX
  • 如果使用JavaFX应用程序,您将已经处于JavaFX应用程序线程中,因此在这种情况下不需要调用Platform.runLater
  • 确保您使用的是Oracle Java 8运行时和OpenJDK(请使用
    Java-version
    进行检查)
  • 确保您的系统符合要求。特别是:

    必须安装GLIB 2.28才能运行JavaFX Media。必须安装以下软件才能支持AAC音频、MP3音频、H.264视频和HTTP实时流媒体:Ubuntu Linux 12.04或同等版本上的libavcodec53和libavformat53


鉴于您提供的信息,无法验证问题的确切原因,但希望上述建议能帮助您解决问题。

您没有说,但我打赌您正在使用Ubuntu

这是JavaFX的一个bug。
错误报告:

解决方案1 它在Java9中是固定的,所以更新到Java9将解决这个问题

解决方案2 使用提供的
org.frice.utils.media.AudioManager.play
(这是一个1.6mb的jar库,您只需使用它的
AudioManager.play
,支持mp3)

解决方案3 将mp3文件转换为wav格式,该格式受JavaFX
MediaPlayer
支持

解决方案4
不要在Ubuntu上运行它。

我在JavaFX13和Ubuntu 18.04上也遇到了同样的问题。解决办法很简单。只需使用以下命令安装丢失的mp3和H.264代码:

sudo apt-get install ubuntu-restricted-extras ffmpeg

更新,我正在运行Java8,Oracle版本。我试了所有答案告诉我的东西,但是没有运气。
sudo apt-get install ubuntu-restricted-extras ffmpeg