我正在尝试以下代码来播放mp3。该文件位于正确的文件夹中。打开文件时抛出异常。
任何想法都可能出错?
当尝试在第三行打印url时,它会给我一个空指针异常。
我正在使用1.8到1.5分钟的compat版本进行编译。这可能是相关的吗?
AudioInputStream audioIn = null;
URL url = this.getClass().getResource("./data/1.wav");
System.out.print(url.getFile());
try {
audioIn = AudioSystem.getAudioInputStream(url);
//audioInputStream = AudioSystem.getAudioInputStream(this.getClass().getResource(soundFile));
}
catch(Exception ex) {System.out.print("exception opening file");}
try{
Clip clip = AudioSystem.getClip();
clip.open(audioIn);
clip.start();
}
catch(Exception ex)
{
System.out.print("exception mediaplayer");
}
}
答案 0 :(得分:0)
您可以使用Clip对象,而不是使用String var。使用Clip,它对我有用。
答案 1 :(得分:0)
哦,我必须将数据文件夹放在src目录中。
但仍然存在一个问题:当我编译为jar文件时,它找不到数据文件夹。我希望用户能够在其中放置不同的东西。
答案 2 :(得分:0)
与文件地址不同,URL可以看到Jar。因此,您可以使用URL来获取文件。
两个可能的问题:
(1)如果文件是.mp3并且你试图加载.wav,那么当然会出现不匹配的情况,如1.mp3<> 1.wav。
(2)将数据放入src文件夹是不够的。它也必须位于包含您引用的“this”的文件夹的子文件夹中。例如,如果您的代码位于包“foo”中,则放置文件的位置为src / foo / data / 1.wav。
你有一个库来解码.mp3吗?如果是这样,像JavaZoom这样的东西应该可以工作。