Java 尝试从ID3v1标记读取流派时出现NullPointerException

Java 尝试从ID3v1标记读取流派时出现NullPointerException,java,android,Java,Android,我试图使用Beaglebuddy和JaudioTagger库从mp3文件中读取流派标记,我得到一个NullPointerException指向: 使用Beaglebuddy时,其原因是: songs.add(mp3.getMusicType().toString()); songs.add(f.getID3v1Tag().getGenre().toString()); 或者当我使用Jaudiotager时,其原因是: songs.add(mp3.getMusicType().toString

我试图使用Beaglebuddy和JaudioTagger库从mp3文件中读取流派标记,我得到一个NullPointerException指向:

使用Beaglebuddy时,其原因是:

songs.add(mp3.getMusicType().toString());
songs.add(f.getID3v1Tag().getGenre().toString());
或者当我使用Jaudiotager时,其原因是:

songs.add(mp3.getMusicType().toString());
songs.add(f.getID3v1Tag().getGenre().toString());

我想我没有正确地使用这些方法,因为我确信类型已经设置好了。有谁能告诉我应该如何获得流派吗?

如果你在同一个地方使用这两行,并且两行都获得了NPE-很可能歌曲为空,这是在这两个地方访问的唯一变量。我建议将该行分成多个部分,保存中间值,并在调试器下运行,以查看哪一个为空。

如果您在同一位置使用这两行,并且两行都得到NPE,那么songs为空的可能性很大,这是在这两个位置访问的唯一变量。我建议将该行分成多个部分,保存中间值,并在调试器下运行,以查看哪一个为null。

我使用了JAudioTagger 2.0.4库。 ID3V1标签输出:

ID3v1Tag         v1Tag  = f.getID3v1Tag();
v1Tag.getFirstGenre();

我使用了Jaudiotager 2.0.4库。 ID3V1标签输出:

ID3v1Tag         v1Tag  = f.getID3v1Tag();
v1Tag.getFirstGenre();

正如你所说,我已经试过了,现在它指向mp3.getMusicType().toString()。所以它不是songs数组。@user1477362您是否尝试过将该行分成多个部分,并在调试器中检查哪个部分为空?我已经按照您所说的进行了尝试,现在它指向mp3.getMusicType().toString()。所以这不是歌曲数组。@user1477362你有没有尝试过将该行分成多个部分,并在调试器中检查哪个部分为空?请说正确的英语,这很难理解不是每个人都能完美英语:请说正确的英语,这很难理解不是每个人都能完美英语:P