当前位置: 首页 > 知识库问答 >
问题:

JavaFX:试图通过MediaPlayer类播放mp3文件时“工具包”未初始化

牟嘉
2023-03-14

我正试着用下面的代码在我的程序背景中制作一个简单的mp3播放器:

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

intro.mp3文件和其他文件一起放在我的包的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)

根据问题的原因,有人有任何想法吗?

共有3个答案

胡永逸
2023-03-14

还有一种方法可以显式初始化工具包,方法是调用:com.sun.javafx.application.PlatformImpl#startup(Runnable)

由于使用了*Impl,所以有点麻烦,但如果您出于某种原因不想使用ApplicationJXFPanel,则很有用。

陆啸
2023-03-14

为了避免初始化异常,您必须调用Application.launch()方法或者简单地实例化一个新的JFXPanel()类(即使它不用于任何事情)。这将在应用程序启动时启动JavaFxRuntime

要实例化JFXPanel,请在代码中添加以下代码行

 final JFXPanel fxPanel = new JFXPanel();

导入以下包

import javafx.embed.swing.JFXPanel;
方轩昂
2023-03-14

JavaFX 在启动时执行“隐藏”初始化。运行媒体播放器不会触发初始化。

触发它的最简单方法是:

  • 执行 Application.launch()
  • 从由 fx ant 任务打包的 jar 运行基于应用程序程序(例如,从 Netbeans JavaFX 项目构建)
  • JFXPanel 启动了吗
  • call Platform.startup(Runnable) (Java 9 )
 类似资料:
  • 问题内容: 我正在尝试使用以下命令在程序的后台播放一个简单的mp3: intro.mp3文件与其他.class文件放在我的包的bin文件夹中。 问题是我的程序终止于: 完整的终止日志为: 根据问题的原因有人有想法吗? 问题答案: 在启动时执行“隐藏”初始化。运行不会触发初始化。 触发它的最简单方法是: 已经执行 具有从fx ant任务打包的jar运行的基础程序(例如,从Netbeans JavaF

  • 我遵循了本教程:http://what-when-how.com/javafx-2/playing-audio-using-the-media-classes-javafx-2-part-1/ 我有相应的资源文件夹在相应的目录中。类文件,但我仍然不能播放音频。mp3文件与教程中的不同,但我也有一个. wav等效文件,发现JavaFX可以开箱播放*. wav文件,但不能播放mp3文件。怎么回事啊?

  • 我在 C# 应用程序中播放.MP3文件方面经验不足,但我需要这样做。我尝试在周末编写一个简单的.NET Core 3控制台应用程序。它工作正常。我以为很容易将我在家里做的事情复制到我的工作环境中,但它并没有播放到.MP3文件。下面是我正在编写的 WPF 应用中的代码: 两者之间的区别在于我在家里写了一个。NET Core 3.1控制台应用程序。在工作中它是一个。NET 4.5.2 WPF应用程序。

  • 我正在用JavaFX开发我认为应该是一个简单的任务的media player,它将在用户默认的音乐文件夹路径(使用fedora)中播放存储在本地硬盘驱动器上的mp3文件。我可以很好地从命令行播放所有mp3文件,但当我尝试通过javafx.scene.media库播放时,javafx一直告诉我mp3是一种受支持的媒体类型。我已经下载了我能找到的每一个图书馆,但没有用。下面是一个实际尝试打开文件并播放

  • 我想在Windows7下使用JavaFX(Java版本1.8.0_05)的MediaPlayer播放电影文件。我使用了FileChooser类,因此在我的应用程序中,可以在运行时选择本地文件和UNC网络文件。 摘自我的代码: 如果选择了本地文件,则一切正常。例如,Media对象包含以下URL(在调试器中读出): ...媒体播放器可以毫无问题地构建。 我已将此文件复制到我的NAS驱动器。现在,如果从

  • 我的应用程序是基于Swing的。我想介绍JavaFX,并将其配置为在辅助显示器上呈现场景。我可以使用JFrame来保存JFXPanel,JFXPanel可以保存JFXPanel,但我希望使用JavaFX API来实现这一点。 将com.sun.glass.ui.application子类化并使用application.launch(这)不是一个选项,因为调用线程将被阻塞。 编辑:结论 问题:非平凡