JavaFX: “Toolkit” not initialized when trying to play an mp3 file through MediaPlayer class

╄→尐↘猪︶ㄣ 提交于 2019-11-26 17:48:01
Sergey Grinev

JavaFX performs "hidden" initialization on start. Running MediaPlayer doesn't trigger initialization.

The easiest ways to trigger it are:

  • have Application.launch() executed
  • have Application based program being run from jar packaged by fx ant tasks (e.g. built from Netbeans JavaFX project)
  • have JFXPanel started
  • call Platform.startup(Runnable) (Java 9+)

To avoid initialization Exception you have to either invoke Application.launch() method or simply instantiate a new JFXPanel() class (even if it isn’t used for anything). This will initiate JavaFxRuntime when application is started

To instantiate JFXPanel add below line in your code

 final JFXPanel fxPanel = new JFXPanel();

Import following package

import javafx.embed.swing.JFXPanel;

There's also way to initialize toolkit explicitly, by calling: com.sun.javafx.application.PlatformImpl#startup(Runnable)

Little bit hacky, due to using *Impl, but is useful, if you don't want to use Application or JXFPanel for some reason.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!