我一直在尝试在我的应用中播放音乐。我一直在使用示例BigClip代码:
try {
url = new URL(Sounds.class.getResourceAsStream("title1.wav").toString());
} catch (MalformedURLException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
}
BigClip clip = new BigClip();
AudioInputStream ais = null;
try {
ais = AudioSystem.getAudioInputStream(url);
} catch (UnsupportedAudioFileException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
clip.open(ais);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (LineUnavailableException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
clip.start();
JOptionPane.showMessageDialog(null, "BigClip.start()");
clip.loop(4);
JOptionPane.showMessageDialog(null, "BigClip.loop(4)");
clip.setFastForward(true);
clip.loop(8);
// the looping/FF combo. reveals a bug..
// there is a slight 'click' in the sound that should not be audible
JOptionPane.showMessageDialog(null, "Are you on speed?");
}
当我仅使用
title1.wav
时,出现此错误:java.net.MalformedURLException: no protocol: java.io.BufferedInputStream
当我添加协议(protocol)
file://
时,我得到了NullPointerException
,尽管我看不出是什么原因引起的。我使用了错误的协议(protocol),还是做错了其他事情?提前致谢!
最佳答案
假设您的文件与Sounds类位于同一包(“目录”)中,请使用
url = Sounds.class.getResource("title1.wav");
因为
new URL(Sounds.class.getResourceAsStream("title1.wav").toString())
只是注定不会工作。您正在InputStream的实例上调用
toString
。NPE发生的原因可能是
AudioSystem.getAudioInputStream
由于URL路径错误而失败,因此ais
为null,并且BigClip
从open
抛出了NPE。