本地测试服务器初始化Minecraft Bukkit插件两次导致启动报错的问题求助
本地测试服务器初始化Minecraft Bukkit插件两次导致启动报错的问题求助
各位大佬好,我正在开发一个Minecraft Bukkit插件,每次启动测试服务器时都会遇到插件重复初始化的错误,具体报错信息如下:
[11:05:09 ERROR]: Error occurred while enabling JizzpowerpluginByAndysepp v0.1.1-indev (Is it up to date?) java.lang.IllegalArgumentException: Plugin already initialized! at org.bukkit.plugin.java.PluginClassLoader.initialize(PluginClassLoader.java:281) ~[paper-api-1.21.4-R0.1-SNAPSHOT.jar:?] at org.bukkit.plugin.java.PluginClassLoader.init(PluginClassLoader.java:153) ~[paper-api-1.21.4-R0.1-SNAPSHOT.jar:?] at org.bukkit.plugin.java.JavaPlugin.<init>(JavaPlugin.java:57) ~[paper-api-1.21.4-R0.1-SNAPSHOT.jar:?] at jizzpowerpluginbyandysepp-0.1.1-indev.jar/ch.ksrminecraft.jizzpowerpluginByAndysepp.listeners.SilenceWarden.<init>(SilenceWarden.java:18) ~[jizzpowerpluginbyandysepp-0.1.1-indev.jar:?] at jizzpowerpluginbyandysepp-0.1.1-indev.jar/ch.ksrminecraft.jizzpowerpluginByAndysepp.JizzpowerpluginByAndysepp.registerListeners(JizzpowerpluginByAndysepp.java:34) ~[jizzpowerpluginbyandysepp-0.1.1-indev.jar:?] at jizzpowerpluginbyandysepp-0.1.1-indev.jar/ch.ksrminecraft.jizzpowerpluginByAndysepp.JizzpowerpluginByAndysepp.onEnable(JizzpowerpluginByAndysepp.java:18) ~[jizzpowerpluginbyandysepp-0.1.1-indev.jar:?] at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:284) ~[paper-api-1.21.4-R0.1-SNAPSHOT.jar:?] at io.papermc.paper.plugin.manager.PaperPluginInstanceManager.enablePlugin(PaperPluginInstanceManager.java:202) ~[paper-1.21.4.jar:1.21.4-164-8eb8e44] at io.papermc.paper.plugin.manager.PaperPluginManagerImpl.enablePlugin(PaperPluginManagerImpl.java:109) ~[paper-1.21.4.jar:1.21.4-164-8eb8e44] at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:520) ~[paper-api-1.21.4-R0.1-SNAPSHOT.jar:?] at org.bukkit.craftbukkit.CraftServer.enablePlugin(CraftServer.java:657) ~[paper-1.21.4.jar:1.21.4-164-8eb8e44] at org.bukkit.craftbukkit.CraftServer.enablePlugins(CraftServer.java:606) ~[paper-1.21.4.jar:1.21.4-164-8eb8e44] at net.minecraft.server.MinecraftServer.loadWorld0(MinecraftServer.java:743) ~[paper-1.21.4.jar:1.21.4-164-8eb8e44] at net.minecraft.server.MinecraftServer.loadLevel(MinecraftServer.java:488) ~[paper-1.21.4.jar:1.21.4-164-8eb8e44] at net.minecraft.server.dedicated.DedicatedServer.initServer(DedicatedServer.java:322) ~[paper-1.21.4.jar:1.21.4-164-8eb8e44] at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1163) ~[paper-1.21.4.jar:1.21.4-164-8eb8e44] at net.minecraft.server.MinecraftServer.lambda$spin$2(MinecraftServer.java:310) ~[paper-1.21.4.jar:1.21.4-164-8eb8e44] at java.base/java.lang.Thread.run(Thread.java:1583) ~[?:?] Caused by: java.lang.IllegalStateException: Initial initialization at org.bukkit.plugin.java.PluginClassLoader.initialize(PluginClassLoader.java:284) ~[paper-api-1.21.4-R0.1-SNAPSHOT.jar:?] at org.bukkit.plugin.java.PluginClassLoader.init(PluginClassLoader.java:153) ~[paper-api-1.21.4-R0.1-SNAPSHOT.jar:?] at org.bukkit.plugin.java.JavaPlugin.<init>(JavaPlugin.java:57) ~[paper-api-1.21.4-R0.1-SNAPSHOT.jar:?] at jizzpowerpluginbyandysepp-0.1.1-indev.jar/ch.ksrminecraft.jizzpowerpluginByAndysepp.JizzpowerpluginByAndysepp.<init>(JizzpowerpluginByAndysepp.java:12) ~[jizzpowerpluginbyandysepp-0.1.1-indev.jar:?] at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:62) ~[?:?] at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:502) ~[?:?] at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:486) ~[?:?] at org.bukkit.plugin.java.PluginClassLoader.<init>(PluginClassLoader.java:98) ~[paper-api-1.21.4-R0.1-SNAPSHOT.jar:?] at io.papermc.paper.plugin.provider.type.spigot.SpigotPluginProvider.createInstance(SpigotPluginProvider.java:125) ~[paper-1.21.4.jar:1.21.4-164-8eb8e44] at io.papermc.paper.plugin.provider.type.spigot.SpigotPluginProvider.createInstance(SpigotPluginProvider.java:35) ~[paper-1.21.4.jar:1.21.4-164-8eb8e44] at io.papermc.paper.plugin.entrypoint.strategy.modern.ModernPluginLoadingStrategy.loadProviders(ModernPluginLoadingStrategy.java:116) ~[paper-1.21.4.jar:1.21.4-164-8eb8e44] at io.papermc.paper.plugin.storage.SimpleProviderStorage.enter(SimpleProviderStorage.java:38) ~[paper-1.21.4.jar:1.21.4-164-8eb8e44] at io.papermc.paper.plugin.entrypoint.LaunchEntryPointHandler.enter(LaunchEntryPointHandler.java:39) ~[paper-1.21.4.jar:1.21.4-164-8eb8e44] at org.bukkit.craftbukkit.CraftServer.loadPlugins(CraftServer.java:563) ~[paper-1.21.4.jar:1.21.4-164-8eb8e44] at net.minecraft.server.dedicated.DedicatedServer.initServer(DedicatedServer.java:277) ~[paper-1.21.4.jar:1.21.4-164-8eb8e44] ... 3 more
这个错误提示Plugin already initialized!,说明我的插件被初始化了两次,但我已经做了以下排查:
- 试过分别使用Maven打包生成的两个jar包(
original-jizzpowerpluginbyandysepp-0.1.1-indev.jar和jizzpowerpluginbyandysepp-0.1.1-indev.jar)单独测试 - 确认插件文件夹里没有放置重复的插件文件
我根据错误堆栈做了分析:
从报错信息里可以看到,第一次初始化是在主类的构造阶段,而第二次初始化是在初始化SilenceWarden监听器的时候触发的,错误根源指向主类JizzpowerpluginByAndysepp的第12行。
我的主类代码如下:
package ch.ksrminecraft.jizzpowerpluginByAndysepp; import org.bukkit.plugin.java.JavaPlugin; import ch.ksrminecraft.jizzpowerpluginByAndysepp.commands.GUICommand; import ch.ksrminecraft.jizzpowerpluginByAndysepp.commands.PlayerTroll; import ch.ksrminecraft.jizzpowerpluginByAndysepp.listeners.SilenceWarden; import ch.ksrminecraft.jizzpowerpluginByAndysepp.listeners.InventoryListener; import ch.ksrminecraft.jizzpowerpluginByAndysepp.utils.TrollTabCompleter; import ch.ksrminecraft.jizzpowerpluginByAndysepp.utils.ItemBuilder; public final class JizzpowerpluginByAndysepp extends JavaPlugin { // <-- line 12 @Override public void onEnable() { // Plugin startup logic registerCommands(); registerListeners(); } @Override public void onDisable() { // Plugin shutdown logic } private void registerCommands() { // registerCommands() is called in onEnable() to register the commands getCommand("troll").setExecutor(new PlayerTroll(this)); getCommand("troll").setTabCompleter(new TrollTabCompleter(this)); getCommand("trollgui").setExecutor(new GUICommand(this)); } private void registerListeners( ) { // registerListeners() is called in onEnable() to register the listeners getServer().getPluginManager().registerEvents(new SilenceWarden(this), this); getServer().getPluginManager().registerEvents(new InventoryListener(this), this); } }
我感觉问题应该出在主类里,但实在看不出哪里有问题,为什么会触发插件的两次初始化呢?恳请各位大佬帮忙指点一下!
备注:内容来源于stack exchange,提问作者Andysepp
相关产品推荐
相关产品推荐

