【发布时间】:2015-03-09 02:58:18
【问题描述】:
我正在尝试编写这个 Minecraft 插件,但我在 CompMeme 类(第 16 行)的 onEnable() 处不断收到 NullPointerException,奇怪的是,即使我将 System.out.print() 放入同一行。如果 NullPointerException 不存在,则意味着插件将简单地加载而没有任何更多消息。如何解决此 NullPointerException?
[21:51:15] [Server thread/ERROR]: Error occurred while enabling CompMeme v0.1.5-SNAPSHOT (Is it up to date?)
java.lang.NullPointerException
at escaperestart.sircomputer.compmeme.CompMeme.onEnable(CompMeme.java:16) ~[?:?]
at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:321) ~[spigot-1.8.jar:git-Spigot-c3c767f-33d5de3]
at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:335) [spigot-1.8.jar:git-Spigot-c3c767f-33d5de3]
at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:405) [spigot-1.8.jar:git-Spigot-c3c767f-33d5de3]
at org.bukkit.craftbukkit.v1_8_R1.CraftServer.loadPlugin(CraftServer.java:356) [spigot-1.8.jar:git-Spigot-c3c767f-33d5de3]
at org.bukkit.craftbukkit.v1_8_R1.CraftServer.enablePlugins(CraftServer.java:316) [spigot-1.8.jar:git-Spigot-c3c767f-33d5de3]
at net.minecraft.server.v1_8_R1.MinecraftServer.q(MinecraftServer.java:402) [spigot-1.8.jar:git-Spigot-c3c767f-33d5de3]
at net.minecraft.server.v1_8_R1.MinecraftServer.k(MinecraftServer.java:370) [spigot-1.8.jar:git-Spigot-c3c767f-33d5de3]
at net.minecraft.server.v1_8_R1.MinecraftServer.a(MinecraftServer.java:325) [spigot-1.8.jar:git-Spigot-c3c767f-33d5de3]
at net.minecraft.server.v1_8_R1.DedicatedServer.init(DedicatedServer.java:211) [spigot-1.8.jar:git-Spigot-c3c767f-33d5de3]
at net.minecraft.server.v1_8_R1.MinecraftServer.run(MinecraftServer.java:505) [spigot-1.8.jar:git-Spigot-c3c767f-33d5de3]
at java.lang.Thread.run(Thread.java:744) [?:1.7.0_51
我不确定我做错了什么,这是我的CompMeme 课程:
public final class CompMeme extends JavaPlugin {
public static CompMeme plugin;
public String version = "0.1.6-SNAPSHOT";
public void onEnable() {
getConfig().options().copyDefaults(true);
saveConfig();
getCommand("rofl").setExecutor(Executor.rofl);
getCommand("facepalm").setExecutor(Executor.facepalm);
getCommand("lol").setExecutor(Executor.lol);
getCommand("iliketrains").setExecutor(Executor.iliketrains);
getCommand("blamenill").setExecutor(Executor.blamenill);
getCommand("odns").setExecutor(Executor.odns);
getCommand("ragequit").setExecutor(Executor.ragequit);
getCommand("rage").setExecutor(Executor.rage);
getCommand("compmeme").setExecutor(Executor.compmemecmd);
}
public void onDisable() {
saveConfig();
}
}
这是我的Executor 课程:
public class Executor {
public static CompMeme compmeme = CompMeme.plugin;
public static BasicCommand rofl = new BasicCommand(compmeme, "rofl", ChatColor.DARK_GREEN, "[Rofl]");
public static BasicCommand facepalm = new BasicCommand(compmeme, "facepalm", ChatColor.AQUA, "[Facepalm]");
public static BasicCommand lol = new BasicCommand(compmeme, "lol", ChatColor.DARK_GREEN, "[Lol]");
public static BasicCommand iliketrains = new BasicCommand(compmeme, "iliketrains", ChatColor.DARK_PURPLE, "[Trains!]");
public static BasicCommand blamenill = new BasicCommand(compmeme, "blamenill", ChatColor.DARK_RED, "[Blame Nill]");
public static InputCommand odns = new InputCommand(compmeme, "odns", ChatColor.GOLD, "[ODNS]");
public static Rage rage = new Rage(compmeme);
public static Ragequit ragequit = new Ragequit(compmeme);
public static CompMemeCmd compmemecmd = new CompMemeCmd(compmeme);
}
这是我的plugin.yml:
name: CompMeme
main: escaperestart.sircomputer.compmeme.CompMeme
version: 0.1.5-SNAPSHOT
description: Meme commands for EscapeRestart
author: SirComputer
commands:
rofl:
description: Makes you roll on the floor laughing.
usage: /rofl
permission: compmeme.rofl
facepalm:
description: Makes you facepalm.
usage: /facepalm
permission: compmeme.facepalm
lol:
description: Makes you laugh out loud.
usage: /lol
permission: compmeme.lol
iliketrains:
description: Show your support for trains.
usage: /iliketrains
permission: compmeme.lol
aliases: trains
blamenill:
description: Makes you blame Nill.
usage: /blamenill
permission: compmeme.blamenill
odns:
description: One does not simply...
usage: /odns
permission: compmeme.odns
ragequit:
description: Makes you ragequit.
usage: /ragequit
permission: compmeme.ragequit
rage:
description: Activate or deactivate rage mode.
usage: /rage [activate/deactivate]
permission: compmeme.rage
aliases: ragemode
compmeme:
description: CompMeme information command.
usage: /compmeme <info/enable/disable>
permission: compmeme.compmeme
aliases: ragemode
permissions:
compmeme.*:
default: op
description: Ops get ALL the commands!
children:
compmeme.rofl: true
compmeme.facepalm: true
compmeme.lol: true
compmeme.iliketrains: true
compmeme.blamenill: true
compmeme.odns: true
compmeme.ragequit: true
compmeme.rage: true
compmeme.compmeme: true
compmeme.enable: true
compmeme.disable: true
我不确定其他人是否在 Minecraft 插件中发生过这种情况 - 不过看起来它在其他事情中发生过一两次。
【问题讨论】: