2017-01-12 47 views
0

我的错误日志在第13行(在我的MainClass中)有一个NPE。OnEnable()(Bukkit插件)中的NullPointerException

我MainClass:

package me.p250; 

import org.bukkit.configuration.file.FileConfiguration; 
import org.bukkit.plugin.java.JavaPlugin; 

import me.p250.command.BuyCommand; 

public class MainClass extends JavaPlugin { 

public FileConfiguration config; 

public void onEnable() { 
    getCommand("a").setExecutor(new BuyCommand(this)); 
} 

public void onDisable() { 

    } 

} 

和我之外的其他类: http://pastebin.com/bYpCnPN2

+0

可能getCommand返回null: https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/plugin/java/JavaPlugin.html#getCommand(java.lang.String) – gawi

+0

为什么人们仍然问NPE问题吗?难以测试**吗? – Moira

回答

3

正如其他人已经说过的,你会得到一个NPE,因为命令“a”不存在。如果你还没有做到这一点,也可以将它添加到.yml文件中。

commands: 
    a: 
    description: does something 
    usage: /a 

编辑:显然你还没有将它添加到你的onCommand。检查命令使用

if(cmd.getName().equalsIgnoreCase("a")) { 
    //do stuff when /a is executed 
} 

args检查可以在那里完成。例如:

if(cmd.getName().equalsIgnoreCase("a")) { 
    if(args[0].equalsIgnoreCase("test1")){ 
     //execute code for /a test1 
    } else if(args[0].equalsIgnoreCase("test2")){ 
     //execute code for /a test2 
    } 
} 
+1

我只需要在我的plugin.yml中注册我的命令因为我使用了CommandExecutor,所以我不必做的是(label.equalsIgnoreCase(“a”) – GoldShovel

+0

噢,我明白了,对不起,我的编辑,我只是​​意识到我在写废话! – AscendedKitten

+0

别担心,我也是无意义的,因为我应该检查我的命令是否先注册!!编辑:好吧,到底什么是我会发布错误日志:O – GoldShovel

0

getCommand返回null如果该命令不存在。确保创建了“a”命令。

+0

我忘了如何制作命令“a”。我将如何把它放到我的其他课堂? (我还没做bukkit!) – GoldShovel