Java 插件getDataFolder空指针
我正在和其他一些人一起开发一个Bukkit插件,我正在尝试创建一个日志系统。我已经试着修复我的坏代码两天了,但一无所获。它似乎被卡住的部分是我获取插件的数据文件夹,这样我就可以继续并写入文件夹中的文件 堆栈跟踪: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
[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);