Javafx媒体播放器

Javafx媒体播放器,java,class,mp3,Java,Class,Mp3,为什么它不起作用? 我试图更改文件名、路径,但仍然不起作用。 我有很多例外。 我不知道这个代码有什么问题。 文件路径/Users/Mariusz/Music/Audio.mp3 我更改了代码,但仍然不起作用 if(e.getActionCommand().equals("Play")) { bar.setString(file.getName().split(".mp3")[0]); playSound(file); } public void playSou

为什么它不起作用? 我试图更改文件名、路径,但仍然不起作用。 我有很多例外。 我不知道这个代码有什么问题。 文件路径/Users/Mariusz/Music/Audio.mp3

我更改了代码,但仍然不起作用

if(e.getActionCommand().equals("Play")) {
        bar.setString(file.getName().split(".mp3")[0]);
        playSound(file); 
}

public void playSound(File file){
    String bip = file.toURI().toString();
    Media hit = new Media(bip);
    MediaPlayer mediaPlayer = new MediaPlayer(hit);
    mediaPlayer.play();
}

线程“thread-12”java.lang.IllegalStateException中的异常:工具箱未初始化 位于com.sun.javafx.application.PlatformImpl.runLater(PlatformImpl.java:155) 位于com.sun.javafx.application.PlatformImpl.runLater(PlatformImpl.java:150) 位于javafx.application.Platform.runLater(Platform.java:52) 位于javafx.scene.media.media$\u MetadataListener.onMetadata(media.java:499) 位于com.sun.media.jfxmediimpl.MetadataParserImpl.done(MetadataParserImpl.java:158) 位于com.sun.media.jfxmediimpl.platform.java.ID3MetadataParser.parse(ID3MetadataParser.java:270) 在com.sun.media.jfxmediaimpl.MetadataParserImpl.run(MetadataParserImpl.java:141)上 线程“AWT-EventQueue-0”java.lang.IllegalStateException中出现异常:工具箱未初始化 位于com.sun.javafx.application.PlatformImpl.runLater(PlatformImpl.java:155) 位于com.sun.javafx.application.PlatformImpl.runLater(PlatformImpl.java:150) 位于javafx.application.Platform.runLater(Platform.java:52) 位于javafx.scene.media.MediaPlayer.init(MediaPlayer.java:450) 位于javafx.scene.media.MediaPlayer。(MediaPlayer.java:365) 播放声音(MyFrame.java:300) 在MyFrame.actionPerformed(MyFrame.java:281) 在javax.swing.AbstractButton.fireActionPerformed上(AbstractButton.java:2018) 位于javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341) 在javax.swing.DefaultButtonModel.fireActionPerformed上(DefaultButtonModel.java:402) 在javax.swing.DefaultButtonModel.setPressed中(DefaultButtonModel.java:259) 在javax.swing.plaf.basic.BasicButtonListener.MouseRelease(BasicButtonListener.java:252) 位于java.awt.Component.ProcessMouseeEvent(Component.java:6505) 位于javax.swing.JComponent.ProcessMouseeEvent(JComponent.java:3320) 位于java.awt.Component.processEvent(Component.java:6270) 位于java.awt.Container.processEvent(Container.java:2229) 位于java.awt.Component.dispatchEventImpl(Component.java:4861) 位于java.awt.Container.dispatchEventImpl(Container.java:2287) 位于java.awt.Component.dispatchEvent(Component.java:4687) 位于java.awt.LightweightDispatcher.RetargetMouseeEvent(Container.java:4832) 位于java.awt.LightweightDispatcher.ProcessMouseeEvent(Container.java:4492) 位于java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422) 位于java.awt.Container.dispatchEventImpl(Container.java:2273) 位于java.awt.Window.dispatchEventImpl(Window.java:2719) 位于java.awt.Component.dispatchEvent(Component.java:4687) 位于java.awt.EventQueue.dispatchEventImpl(EventQueue.java:729) 在java.awt.EventQueue.access$200(EventQueue.java:103) 在java.awt.EventQueue$3.run(EventQueue.java:688) 在java.awt.EventQueue$3.run(EventQueue.java:686) 位于java.security.AccessController.doPrivileged(本机方法) 位于java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) 位于java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87) 在java.awt.EventQueue$4.run(EventQueue.java:702) 在java.awt.EventQueue$4.run(EventQueue.java:700) 位于java.security.AccessController.doPrivileged(本机方法) 位于java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) 位于java.awt.EventQueue.dispatchEvent(EventQueue.java:699) 位于java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242) 在java.awt.EventDispatchThread.PumpeEventsforFilter(EventDispatchThread.java:161) 位于java.awt.EventDispatchThread.PumpeEventsforHierarchy(EventDispatchThread.java:150) 位于java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146) 位于java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138) 在java.awt.EventDispatchThread.run(EventDispatchThread.java:91) 采用URI,而不是文件路径说明符

在JavaFX2.2中,构造函数具有以下约束:

  • 根据的要求,提供的URI必须符合RFC-2396
  • 仅支持HTTP、文件和JAR URI
当前
file.getPath()调用返回的空格字符在URI中是非法的

要成为有效的URI,必须将
'
编码为
%20


要为文件构造URI,请调用而不是当前调用
file.getPath()

到底发生了什么?有例外吗?
Exception in thread "Thread-12" java.lang.IllegalStateException: Toolkit not initialized
    at com.sun.javafx.application.PlatformImpl.runLater(PlatformImpl.java:155)
    at com.sun.javafx.application.PlatformImpl.runLater(PlatformImpl.java:150)
    at javafx.application.Platform.runLater(Platform.java:52)
    at javafx.scene.media.Media$_MetadataListener.onMetadata(Media.java:499)
    at com.sun.media.jfxmediaimpl.MetadataParserImpl.done(MetadataParserImpl.java:158)
    at com.sun.media.jfxmediaimpl.platform.java.ID3MetadataParser.parse(ID3MetadataParser.java:270)
    at com.sun.media.jfxmediaimpl.MetadataParserImpl.run(MetadataParserImpl.java:141)
Exception in thread "AWT-EventQueue-0" java.lang.IllegalStateException: Toolkit not initialized
    at com.sun.javafx.application.PlatformImpl.runLater(PlatformImpl.java:155)
    at com.sun.javafx.application.PlatformImpl.runLater(PlatformImpl.java:150)
    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 MyFrame.playSound(MyFrame.java:300)
    at MyFrame.actionPerformed(MyFrame.java:281)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
    at java.awt.Component.processMouseEvent(Component.java:6505)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3320)
    at java.awt.Component.processEvent(Component.java:6270)
    at java.awt.Container.processEvent(Container.java:2229)
    at java.awt.Component.dispatchEventImpl(Component.java:4861)
    at java.awt.Container.dispatchEventImpl(Container.java:2287)
    at java.awt.Component.dispatchEvent(Component.java:4687)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
    at java.awt.Container.dispatchEventImpl(Container.java:2273)
    at java.awt.Window.dispatchEventImpl(Window.java:2719)
    at java.awt.Component.dispatchEvent(Component.java:4687)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:729)
    at java.awt.EventQueue.access$200(EventQueue.java:103)
    at java.awt.EventQueue$3.run(EventQueue.java:688)
    at java.awt.EventQueue$3.run(EventQueue.java:686)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
    at java.awt.EventQueue$4.run(EventQueue.java:702)
    at java.awt.EventQueue$4.run(EventQueue.java:700)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:699)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)