Java 插件getDataFolder空指针

Java 插件getDataFolder空指针,java,minecraft,bukkit,Java,Minecraft,Bukkit,我正在和其他一些人一起开发一个Bukkit插件,我正在尝试创建一个日志系统。我已经试着修复我的坏代码两天了,但一无所获。它似乎被卡住的部分是我获取插件的数据文件夹,这样我就可以继续并写入文件夹中的文件 堆栈跟踪: [18:41:07] [Server thread/ERROR]: Error occurred while enabling TownyEco v1.0-SNAPSHOT (Is it up to date?) java.lang.ExceptionInInitializerErro

我正在和其他一些人一起开发一个Bukkit插件,我正在尝试创建一个日志系统。我已经试着修复我的坏代码两天了,但一无所获。它似乎被卡住的部分是我获取插件的数据文件夹,这样我就可以继续并写入文件夹中的文件

堆栈跟踪:

[18:41:07] [Server thread/ERROR]: Error occurred while enabling TownyEco v1.0-SNAPSHOT (Is it up to date?)
java.lang.ExceptionInInitializerError: null
    at com.writedive.townyeco.TownyEco.onEnable(TownyEco.java:67) ~[?:?]
    at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:264) ~[spigot-1.12.2.jar:git-Spigot-4bd94dc-fb414fe]
    at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:337) [spigot-1.12.2.jar:git-Spigot-4bd94dc-fb414fe]
    at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:403) [spigot-1.12.2.jar:git-Spigot-4bd94dc-fb414fe]
    at org.bukkit.craftbukkit.v1_12_R1.CraftServer.enablePlugin(CraftServer.java:381) [spigot-1.12.2.jar:git-Spigot-4bd94dc-fb414fe]
    at org.bukkit.craftbukkit.v1_12_R1.CraftServer.enablePlugins(CraftServer.java:330) [spigot-1.12.2.jar:git-Spigot-4bd94dc-fb414fe]
    at net.minecraft.server.v1_12_R1.MinecraftServer.t(MinecraftServer.java:422) [spigot-1.12.2.jar:git-Spigot-4bd94dc-fb414fe]
    at net.minecraft.server.v1_12_R1.MinecraftServer.l(MinecraftServer.java:383) [spigot-1.12.2.jar:git-Spigot-4bd94dc-fb414fe]
    at net.minecraft.server.v1_12_R1.MinecraftServer.a(MinecraftServer.java:338) [spigot-1.12.2.jar:git-Spigot-4bd94dc-fb414fe]
    at net.minecraft.server.v1_12_R1.DedicatedServer.init(DedicatedServer.java:272) [spigot-1.12.2.jar:git-Spigot-4bd94dc-fb414fe]
    at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:545) [spigot-1.12.2.jar:git-Spigot-4bd94dc-fb414fe]
    at java.lang.Thread.run(Thread.java:748) [?:1.8.0_161]
Caused by: java.lang.NullPointerException
    at com.writedive.townyeco.messaging.TELogWriter.getRootFolder(TELogWriter.java:12) ~[?:?]
    at com.writedive.townyeco.messaging.TELogWriter.<clinit>(TELogWriter.java:14) ~[?:?]
    ... 12 more
在主类内部,记录器引用自onEnable:

TELogWriter.log("Initialized", TELogWriter.LogType.STARTUP);
我该如何解决该问题

主要类别:


Logger类:

不熟悉您正在使用的API,但是

A) 如果getDataFolder()由于不一致性而仅在某些时候返回null

private static String getRootFolder() {
    FolerObjectTypeOfTheAPI path;
    if (plugin != null && (path = plugin.getDataFolder()) != null)  {
        return path.getPath();
    }
    return null; // or you can return "";
}

B) 如果始终为空,则“getDataFolder()”中指定的路径很可能不是文件系统上的正确路径

TELogWriter中的插件从未初始化,因此下面的代码将抛出NPE

private static String getRootFolder() {
    return plugin.getDataFolder().getPath();
}
初始化TownyEco.java中的TELogWriter.plugin,然后调用日志

TELogWriter.plugin = plugin;
TELogWriter.log("Initialized", TELogWriter.LogType.STARTUP);

欢迎来到Stackoverflow。这不是一个好主意,张贴链接到你们所有的类。人们不会花时间访问这些链接并通读你的课程。最好的方法是把特定的代码放在这里,并提出特定的问题。请阅读编辑后的内容,尽量避免使用@AmitPhaltankar
TELogWriter.plugin = plugin;
TELogWriter.log("Initialized", TELogWriter.LogType.STARTUP);