有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Bukkit:getInstance为null

我目前正在为spigot开发一个拍卖插件,这实际上很好

然而,当我启动我的Minecraft服务器时,getInstance()方法返回null时,我不断遇到这个错误。我该怎么解决这个问题? 实例的加载比其他任何操作都要早,如下面所示:

@Override
public void onEnable() {
    instance = this;
    Objects.requireNonNull(this.getCommand("fraithorauctions")).setExecutor(mainCommand);
    eventListener.load(); //Only needs to be loaded once
    loadAll();
}

我得到的错误粘贴在这里:https://pastebin.com/1fQzqcU9

我在我的github上发布了一个存储库,所以你可以阅读它


共 (1) 个答案

  1. # 1 楼答案

    它是空的,因为您在调用onEnable()之前初始化AuctionManager

    private static final AuctionManager auctionManager = new AuctionManager();
    

    然后,您的错误会告诉您为什么为空是一个问题:

    Caused by: java.lang.NullPointerException: Cannot invoke "com.fraithor.fraithorauctions.FraithorAuctions.getDataFolder()" because the return value of "com.fraithor.fraithorauctions.FraithorAuctions.getInstance()" is null

    您可以简单地将初始化移动到onEnable()方法内部,如下所示:

    ...
    private static AuctionManager auctionManager;
    ...
    
    @Override
    public void onEnable() {
        instance = this;
        auctionManager = new AuctionManager();
        ...
    }
    

    然而,更好的做法是将插件实例传递给AuctionManager类构造函数,而不是依赖静态字段