玩。使用记事本的java mp3文件
所以我的代码就是复制粘贴:
import javafx.scene.media.*;
class Gui {
public static void main(String[] args) {
try{
Media hit = new Media("skin.mp3");
MediaPlayer mediaPlayer = new MediaPlayer(hit);
mediaPlayer.play();
}catch(Exception e){
e.printStackTrace();
}
}
}
我得到的例外是:
java.lang.IllegalArgumentException: uri.getScheme() == null!
at com.sun.media.jfxmedia.locator.Locator.<init>(Locator.java:217)
at javafx.scene.media.Media.<init>(Media.java:364)
at Gui.main(gui.java:6)
我正在编译&;正确运行它,即在类路径中包含jfxrt.jar
文件
注意:我只是使用记事本,而不是任何IDE
有谁能告诉我IllegalArgumentException
的原因吗
谢谢
更新:通过使用file://e:/skin.mp3
它运行良好,但给我留下了另一个例外:
MediaException: MEDIA_INACCESSIBLE : e
at javafx.scene.media.Media.<init>(Unknown Source)
at Gui.main(gui.java:6)
如果你能解释一下这个例外
顺便说一句,我检查了这首歌,它没有损坏,因为它在vlc中播放得很好
# 1 楼答案
这个问题中的代码有一些问题
尽管这个问题有一个javafx-2标签,但我想知道它是否是为javafx 1编写的。x JavaFX脚本(它现在是一种不受支持的编程语言,与JavaFX2不兼容)。如果是这样,我建议用Java编码并使用JavaFX2。而不是JavaFX脚本
在Windows上,URI绝对定位器的文件表示在文件协议后有三个斜杠。例如,以下内容是有效的:
出于某种原因,一个斜杠也会起作用(我猜Java会在文件内部插入额外的//作为协议说明符,或者可能在URL规范中有一些我不理解的地方,这意味着协议后面不需要//符号)
检查文件uri的一种方法是询问文件uri是否存在
知道文件uri有效后,可以使用将其转换为字符串
下面是一个简短的示例程序,用于使用MediaPlayer在JavaFX中播放一些音频,并进行一些错误处理,以便在出现问题时更容易理解
下面是指向JavaFX2的另一个示例的链接。x媒体播放器plays all of the mp3 files in a given directory sequentially
# 2 楼答案
来自JavaFXAPI文档
因此,我怀疑从阅读文档中,您需要提供一个URI路径
类似
file://path/to/file/skin.mp3
的东西可能会奏效