Dim*_*nis 27 java media-player javafx-2
我正在尝试使用以下内容在程序的后台进行简单的mp3播放:
Media med = new Media(getClass().getResource("intro.mp3").toExternalForm());
MediaPlayer mPlayer = new MediaPlayer(med);
mPlayer.play();
Run Code Online (Sandbox Code Playgroud)
intro.mp3文件与其他.class文件一起放在我的包的bin文件夹中.
问题是我的程序终止于:
Exception in thread "main" java.lang.IllegalStateException: Toolkit not initialized
Run Code Online (Sandbox Code Playgroud)
完整终止日志是:
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)
Run Code Online (Sandbox Code Playgroud)
根据问题的原因,任何人都有任何想法吗?
Ser*_*nev 25
JavaFX在开始时执行"隐藏"初始化.运行MediaPlayer不会触发初始化.
触发它的最简单方法是:
Application.launch()执行了Application基础的方案是从罐子由FX打包运行Ant任务(例如,从Netbeans的JavaFX项目建)Platform.startup(Runnable)(Java 9+)小智 14
要避免初始化异常,您必须调用Application.launch()方法或者只是实例化一个新的JFXPanel()类 (即使它没有用于任何东西).这将在应用程序启动时启动JavaFxRuntime
要实例化JFXPanel,请在代码中添加以下行
final JFXPanel fxPanel = new JFXPanel();
Run Code Online (Sandbox Code Playgroud)
导入以下包
import javafx.embed.swing.JFXPanel;
Run Code Online (Sandbox Code Playgroud)
也可以通过调用显式初始化工具包:
com.sun.javafx.application.PlatformImpl#startup(Runnable)
由于使用了 *Impl,有点 hacky,但如果您不想使用Application或JXFPanel出于某种原因,它很有用。
| 归档时间: |
|
| 查看次数: |
28050 次 |
| 最近记录: |