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()中调用声音函数,但由于我的声音函数的第二次失败,我的程序无法执行。 media对象接受构造函数中的参数,该参数是音频文件的路径。不知怎的,它在那里失败了:
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文件夹内,但不在包内。 (我在窗户上)。
为什么这不起作用?为什么我会收到这些错误。
答案 0 :(得分:4)
此处的问题是,MediaPlayer
仅用于JavaFX
应用程序,因此如果您希望能够使用,则需要将应用程序转换为JavaFX
应用程序它
要将您的课程转换为您需要的JavaFX
应用程序:
SoundTest
延伸javafx.application.Application
并将您的main
方法修改为下一个
public static void main(String[] args) {
Application.launch(args);
}
sound
start
醇>