我收到此错误
java.lang.NullPointerException
at MidiPlayer.add_midi_files(MidiPlayer.java:59)
at MidiPlayer.main(MidiPlayer.java:51)
Songs added!
Starting to play
Exception in thread "main" java.util.NoSuchElementException
at java.util.LinkedList.removeFirst(LinkedList.java:268)
at java.util.LinkedList.remove(LinkedList.java:683)
at MidiPlayer.play_next_song(MidiPlayer.java:31)
at MidiPlayer.start_playing(MidiPlayer.java:47)
at MidiPlayer.main(MidiPlayer.java:54)
来自这些方法
public static void main(String[] args){
Queue<String> song_queue = new LinkedList<String>();
MidiPlayer.add_midi_files(song_queue,new File( "C:\\Users\\Kyle\\Desktop\\clieent\\Client\\cache\\Music\\runescape-7th realm.mid"));
System.out.println("Songs added!");
MidiPlayer player = new MidiPlayer(song_queue);
player.start_playing();
};
public static void add_midi_files(Queue<String> queue, File top_dir){
try {
for (File f: top_dir.listFiles())
if (f.isDirectory())
add_midi_files(queue, f);
else if (f.isFile() && f.getName().matches(".*midi?"))
{
System.out.println(f);
queue.add(f.getAbsolutePath());
}
else
{}
//System.out.printf("%s doesn't match!", f.getName());
} catch (NullPointerException e) {
e.printStackTrace();
}
}
老实说,我不明白问题是什么,任何人都可以帮助我吗?
赞赏正确方向的任何提示
如果您需要,这是整个课程,http://pastebin.com/0hVw83zn
答案 0 :(得分:4)
File#listFiles()
可以返回null
。请参阅javadoc
如果此抽象路径名不表示目录,则返回null,或 如果发生I / O错误。
您的catch
语句会吞下NullPointerException
,然后
player.start_playing();
尝试从Queue
获取并失败。