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

Java音频不加载. toURI不工作?[重复]

鲜于勇
2023-03-14
import java.io.File;

import javafx.application.Application;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javafx.stage.Stage;

public class SoundTest extends Application{
public static void main(String[] args) {
    launch(args);
}

    public static void sound() {
        String path = "test.mp3";
        Media media = new Media(new File(path).toURI().toString());
        MediaPlayer mediaPlayer = new MediaPlayer(media);
        mediaPlayer.play();
    }

    @Override
    public void start(Stage arg0) throws Exception {
        sound();
    }
}

我有些问题。我谷歌了一下,偶然发现了一些有用的stackoverflow帖子,这些帖子解释了声音是如何通过媒体和媒体播放器加载的。

我正在做的是,我在main()中调用声音函数,但由于第二个类似我的声音函数中的一些失败,我的程序无法执行。媒体对象接受构造函数中的参数,该参数是音频文件的路径。不知何故,当我得到时,它在那里失败了:

Exception in thread "Thread-0" java.lang.IllegalStateException: Toolkit not initialized
    at com.sun.javafx.application.PlatformImpl.runLater(Unknown Source)
    at com.sun.javafx.application.PlatformImpl.runLater(Unknown Source)
    at javafx.application.Platform.runLater(Unknown Source)
    at javafx.scene.media.Media$_MetadataListener.onMetadata(Unknown Source)
    at com.sun.media.jfxmediaimpl.MetadataParserImpl.done(Unknown Source)
    at com.sun.media.jfxmediaimpl.platform.java.ID3MetadataParser.parse(Unknown Source)
    at com.sun.media.jfxmediaimpl.MetadataParserImpl.run(Unknown Source)
Exception in thread "main" java.lang.IllegalStateException: Toolkit not initialized
    at com.sun.javafx.application.PlatformImpl.runLater(Unknown Source)
    at com.sun.javafx.application.PlatformImpl.runLater(Unknown Source)
    at javafx.application.Platform.runLater(Unknown Source)
    at javafx.scene.media.MediaPlayer.init(Unknown Source)
    at javafx.scene.media.MediaPlayer.<init>(Unknown Source)
    at core.SoundTest.sound(SoundTest.java:43)
    at core.SoundTest.main(SoundTest.java:13)

我的声音文件位于类所在的 eclipse 项目的文件夹中。它是一个 3 分钟长的 mp3 文件,位于 src 和 bin 文件夹内,但不在包内。(我在窗户上)。

这怎么行不通?为什么我会收到这些错误。

共有1个答案

慕容品
2023-03-14

这里的问题是MediaPlayer仅用于JavaFX应用程序,因此如果您希望能够使用它,则需要将应用程序转换为JavaFX应用程序。

要将类转换为JavaFX应用程序,您需要:

> < li >要使您的类< code>SoundTest扩展< code > Java FX . application . application < li>

然后修改您的< code>main方法,如下所示

public static void main(String[] args) { Application.launch(args); }

 类似资料:
  • 我正在尝试使用: 显示在控制台中,但什么也没发生<我怎样才能解决这个问题?

  • 其实我是新的PHP。我在一个几乎是空的文件夹中运行这个(实际上是按照劳拉-cast教程:用TDD设计一个流畅的应用编程接口)。 我的目录结构看起来像 src 表情。php 表达测试。php 内部作曲家。json: 内部表达测试。php: 内心的表达。php 然后我运行composer dump autoload并运行phpunit,但仍然得到: 我的语法有问题吗?我对作曲家的理解是非常基本的。提前

  • 我创建了一个简单的GUI,其中包括一个JTable。这张桌子可能被保存了 此时,保存函数按预期工作,当在保存目录中查找时,我可以看到表对象存储在文件中。 但是,当我尝试从文件加载表时,GUI从不显示加载的表。调用actionlistener函数,因为我有一个系统。输出“数据已加载”,但表格从不显示更新的数据。 我已尝试调用repaint(),但无效。如果有人能让我知道我可能做错了什么,我将不胜感激

  • 我创建了这段代码,其中大部分代码都是使用toUpperCase,它应该使单词的每个首字母都大写。没有错误,因此我不确定该方法当前为何不起作用。为什么会这样呢。

  • 我有通话录音应用程序,可以正常工作,直到5.0的呼入和呼出,但音频录制在android 6.0上不起作用,请帮我解决这个问题。我使用媒体记录器,用于麦克风和VOICE_CALL选项,但结果是一样的?