JavaFX: “Toolkit” não inicializado ao tentar reproduzir um arquivo mp3 através da class MediaPlayer

Eu estou tentando fazer um simples mp3 tocar no fundo do meu programa usando o seguinte:

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

O arquivo intro.mp3 é colocado na pasta bin do meu pacote, junto com os outros arquivos .class.

O problema é que meu programa termina com:

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

Log de finalização completa é:

 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.(MediaPlayer.java:365) at PokerApp.(PokerApp.java:33) at PokerApp.main(PokerApp.java:105) 

Alguém tem alguma idéia de acordo com a causa do problema?

    JavaFX executa a boot “oculta” no início. A execução do MediaPlayer não aciona a boot.

    As maneiras mais fáceis de acioná-lo são:

    • ter o Application.launch() executado
    • ter o programa baseado em Application sendo executado a partir do jar empacotado por tarefas fx ant (por exemplo, construído a partir do projeto NetBeans JavaFX)
    • ter o JFXPanel iniciado
    • chamar Platform.startup(Runnable) (Java 9+)

    Para evitar a boot Exceção você tem que invocar o método Application.launch () ou simplesmente instanciar uma nova class JFXPanel () (mesmo que não seja usada para nada). Isso iniciará o JavaFxRuntime quando o aplicativo for iniciado

    Para instanciar o JFXPanel, adicione a linha abaixo em seu código

      final JFXPanel fxPanel = new JFXPanel(); 

    Importar pacote a seguir

     import javafx.embed.swing.JFXPanel; 

    Há também uma maneira de inicializar explicitamente o kit de ferramentas, chamando: com.sun.javafx.application.PlatformImpl#startup(Runnable)

    Pouco hacky, devido ao uso * Impl, mas é útil, se você não quiser usar o Application ou JXFPanel por algum motivo.