java media-player javafx-2

JavaFX: "Toolkit" no se inicializó al intentar reproducir un archivo mp3 a través de la clase MediaPlayer



media-player javafx-2 (4)

Intento hacer una simple reproducción de mp3 en el fondo de mi programa usando lo siguiente:

Media med = new Media(getClass().getResource("intro.mp3").toExternalForm()); MediaPlayer mPlayer = new MediaPlayer(med); mPlayer.play();

El archivo intro.mp3 se coloca en la carpeta bin de mi paquete, junto con los otros archivos .class.

El problema es que mi programa termina con:

Exception in thread "main" java.lang.IllegalStateException: Toolkit not initialized

El registro completo de finalización es:

Device "Intel(R) HD Graphics Family" (//./DISPLAY1) initialization failed : WARNING: bad driver version detected, device disabled. Please update your driver to at least version 8.15.10.2302 Exception in thread "main" java.lang.IllegalStateException: Toolkit not initialized at com.sun.javafx.application.PlatformImpl.runLater(PlatformImpl.java:153) at com.sun.javafx.application.PlatformImpl.runLater(PlatformImpl.java:148) at javafx.application.Platform.runLater(Platform.java:52) at javafx.scene.media.MediaPlayer.init(MediaPlayer.java:450) at javafx.scene.media.MediaPlayer.<init>(MediaPlayer.java:365) at PokerApp.<init>(PokerApp.java:33) at PokerApp.main(PokerApp.java:105)

¿Alguien tiene alguna idea según la causa del problema?


Para evitar la excepción de inicialización, debe invocar el método Application.launch () o simplemente crear una instancia de una nueva clase JFXPanel () (incluso si no se usa para nada). Esto iniciará JavaFxRuntime cuando se inicie la aplicación

Para crear una instancia de JFXPanel, agregue la siguiente línea en su código

final JFXPanel fxPanel = new JFXPanel();

Importar siguiente paquete

import javafx.embed.swing.JFXPanel;


También hay forma de inicializar el kit de herramientas explícitamente, llamando a: com.sun.javafx.application.PlatformImpl#startup(Runnable)

Un poco hacky, debido al uso de * Impl, pero es útil, si no quieres usar Application o JXFPanel por alguna razón.



JavaFX realiza la inicialización "oculta" al inicio. La ejecución de MediaPlayer no desencadena la inicialización.

Las formas más fáciles de activarlo son:

  • have Application.launch() ejecutado
  • tener un programa basado en Application que se ejecuta desde un paquete empaquetado por tareas de fx ant (por ejemplo, creado a partir del proyecto JavaFX de Netbeans)
  • tener JFXPanel comenzado
  • llamar Platform.startup(Runnable) (Java 9+)