30

以下を使用して、プログラムのバックグラウンドで簡単な mp3 再生を試みています。

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

intro.mp3 ファイルは、他の .class ファイルと共に、パッケージの bin フォルダーに配置されます。

問題は、私のプログラムが次のように終了することです:

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

完全な終了ログは次のとおりです。

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)

誰でも問題の原因について何か考えがありますか?

4

4 に答える 4

28

JavaFX起動時に「非表示」の初期化を実行します。実行MediaPlayerしても初期化はトリガーされません。

それをトリガーする最も簡単な方法は次のとおりです。

  • Application.launch()実行した
  • fx ant タスクによってパッケージ化された jar から実行されるApplicationベースのプログラムがある(たとえば、Netbeans JavaFX プロジェクトからビルドされた)
  • JFXPanelを開始しました
  • 呼び出しPlatform.startup(Runnable)(Java 9+)
于 2012-12-24T21:52:03.600 に答える
5

次のように呼び出して、ツールキットを明示的に初期化する方法もあります。 com.sun.javafx.application.PlatformImpl#startup(Runnable)

*Impl を使用しているため、少しハックですが、使用したくない場合ApplicationJXFPanel何らかの理由で便利です。

于 2016-08-10T20:59:40.747 に答える