2014-04-01 43 views
0

这是我的代码。它认为配置区域部分= null。配置为空指针异常

继承人的代码:

公共无效loadArenas(){

fc1 = new File(plugin.getDataFolder(), "config.yaml"); 

    if (!fc1.exists()) { 
     try { 
      fc1.createNewFile(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
    fc = YamlConfiguration.loadConfiguration(fc1); 

    for (String keys : fc.getConfigurationSection("Arenas.").getKeys(false)) { 

哦,继承人的错误:

Error

+0

一个是行224? – JohnnyAW

+0

'它认为配置区域部分= null.'如果有NPE,则它是空的。你不应该与JVM争论,而是找出问题的根源。 – NeplatnyUdaj

+0

我建议你打印出fc的内容或看看你的文件,并验证该部分是否存在。如果配置文件不存在,则创建一个新配置文件,但我没有看到任何预填充。所以,如果你创建一个新的,那么我希望该部分不存在。 – MxyL

回答

1

fc1被初始化,但fc不是。

+0

这一切正常。 Fc是初始化的,但它的“getConfigurationSection” – user3482764

+0

@ user3482764那么问题是什么?如果你知道什么是null,你为什么不修复你的代码? – JohnnyAW

+0

我在问,因为我不知道如何解决它。 – user3482764

0

您应该在顶部打印出fc1的内容。很可能您遇到与路径相关的问题,因此会创建一个新的EMPTY配置文件。

然后,这个新文件被用作fc的输入,自然也就是“Arenas”。部分不存在。当您尝试通过getKeys()访问不存在的部分的密钥时,NPE将被抛出。无论采用哪种方式,如果您不确定问题出在哪里,您可以使用调试器对其进行扫描,也可以随处随地输出打印语句,以确定事物是否符合您的期望。

+0

我会尝试添加默认值:)你可能给我的代码添加默认值吗? – user3482764

+0

这并不能解决问题。如果你总是使用默认设置创建一个新的配置文件,那么这几乎违背了使用配置文件的目的。 – MxyL

+0

我会尝试创建默认值,如果这个工作,你已经救了我。 – user3482764