exception error on /stop on 1.21.8
[07:46:53 INFO]: [WorldGuard] Disabling WorldGuard v7.0.14+2339-43997ec
[07:46:53 INFO]: [WorldGuard] Shutting down executor and cancelling any pending tasks...
[07:46:53 ERROR]: Error occurred while disabling WorldGuard v7.0.14+2339-43997ec
java.lang.IllegalStateException: The plugin classloader for WorldGuardExtraFlags has thrown a zip file error.
at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:225) ~[paper-api-1.21.8-R0.1-SNAPSHOT.jar:?]
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:557) ~[?:?]
at org.bukkit.plugin.java.PluginClassLoader.loadClass0(PluginClassLoader.java:177) ~[paper-api-1.21.8-R0.1-SNAPSHOT.jar:?]
at org.bukkit.plugin.java.PluginClassLoader.loadClass(PluginClassLoader.java:172) ~[paper-api-1.21.8-R0.1-SNAPSHOT.jar:?]
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:490) ~[?:?]
at WorldGuardExtraFlags.jar/net.goldtreeservers.worldguardextraflags.wg.handlers.GlideFlagHandler.onAbsentValue(GlideFlagHandler.java:57) ~[WorldGuardExtraFlags.jar:?]
at WorldGuardExtraFlags.jar/net.goldtreeservers.worldguardextraflags.wg.handlers.GlideFlagHandler.onAbsentValue(GlideFlagHandler.java:18) ~[WorldGuardExtraFlags.jar:?]
at worldguard-bukkit-7.0.14-dist.jar/com.sk89q.worldguard.session.handler.FlagValueChangeHandler.onClearValue(FlagValueChangeHandler.java:86) ~[worldguard-bukkit-7.0.14-dist.jar:?]
at worldguard-bukkit-7.0.14-dist.jar/com.sk89q.worldguard.session.handler.FlagValueChangeHandler.uninitialize(FlagValueChangeHandler.java:50) ~[worldguard-bukkit-7.0.14-dist.jar:?]
at worldguard-bukkit-7.0.14-dist.jar/com.sk89q.worldguard.session.Session.uninitialize(Session.java:144) ~[worldguard-bukkit-7.0.14-dist.jar:?]
at worldguard-bukkit-7.0.14-dist.jar/com.sk89q.worldguard.bukkit.session.BukkitSessionManager.shutdown(BukkitSessionManager.java:92) ~[worldguard-bukkit-7.0.14-dist.jar:?]
at worldguard-bukkit-7.0.14-dist.jar/com.sk89q.worldguard.bukkit.BukkitWorldGuardPlatform.unload(BukkitWorldGuardPlatform.java:149) ~[worldguard-bukkit-7.0.14-dist.jar:?]
at worldguard-bukkit-7.0.14-dist.jar/com.sk89q.worldguard.WorldGuard.disable(WorldGuard.java:206) ~[worldguard-bukkit-7.0.14-dist.jar:?]
at worldguard-bukkit-7.0.14-dist.jar/com.sk89q.worldguard.bukkit.WorldGuardPlugin.onDisable(WorldGuardPlugin.java:266) ~[worldguard-bukkit-7.0.14-dist.jar:?]
at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:286) ~[paper-api-1.21.8-R0.1-SNAPSHOT.jar:?]
at io.papermc.paper.plugin.manager.PaperPluginInstanceManager.disablePlugin(PaperPluginInstanceManager.java:237) ~[paper-1.21.8.jar:1.21.8-4-aa4ef06]
at io.papermc.paper.plugin.manager.PaperPluginInstanceManager.disablePlugins(PaperPluginInstanceManager.java:161) ~[paper-1.21.8.jar:1.21.8-4-aa4ef06]
at io.papermc.paper.plugin.manager.PaperPluginManagerImpl.disablePlugins(PaperPluginManagerImpl.java:97) ~[paper-1.21.8.jar:1.21.8-4-aa4ef06]
at org.bukkit.plugin.SimplePluginManager.disablePlugins(SimplePluginManager.java:541) ~[paper-api-1.21.8-R0.1-SNAPSHOT.jar:?]
at org.bukkit.craftbukkit.CraftServer.disablePlugins(CraftServer.java:624) ~[paper-1.21.8.jar:1.21.8-4-aa4ef06]
at net.minecraft.server.MinecraftServer.stopServer(MinecraftServer.java:1002) ~[paper-1.21.8.jar:1.21.8-4-aa4ef06]
at net.minecraft.server.dedicated.DedicatedServer.stopServer(DedicatedServer.java:712) ~[paper-1.21.8.jar:1.21.8-4-aa4ef06]
at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1295) ~[paper-1.21.8.jar:1.21.8-4-aa4ef06]
at net.minecraft.server.MinecraftServer.lambda$spin$2(MinecraftServer.java:310) ~[paper-1.21.8.jar:1.21.8-4-aa4ef06]
at java.base/java.lang.Thread.run(Thread.java:1447) ~[?:?]
Caused by: java.lang.IllegalStateException: zip file closed
at java.base/java.util.zip.ZipFile.ensureOpen(ZipFile.java:793) ~[?:?]
at java.base/java.util.zip.ZipFile.getEntry(ZipFile.java:287) ~[?:?]
at java.base/java.util.jar.JarFile.getEntry(JarFile.java:505) ~[?:?]
at java.base/java.util.jar.JarFile.getJarEntry(JarFile.java:460) ~[?:?]
at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:220) ~[paper-api-1.21.8-R0.1-SNAPSHOT.jar:?]
... 24 more
> ver WorldGuard
[07:49:26 INFO]: WorldGuard version 7.0.14+2339-43997ec
> ver WorldEdit
[07:49:36 INFO]: WorldEdit version 7.3.16-SNAPSHOT+7191-9164c46
Website: https://enginehub.org/worldedit
Author: EngineHub
> ver WorldGuardExtraFlags
[07:49:41 INFO]: WorldGuardExtraFlags version 4.2.4-SNAPSHOT
Adds more flags to WorldGuard to help manage your server easily!
Website: https://joniaromaa.fi
Author: isokissa3
> ver
[07:49:42 INFO]: Checking version, please wait...
[07:49:42 INFO]: [DiscordSRV] [ALERTS DEBUG] Condition "#command.toLowerCase().startsWith("cmi staffmsg ")" -> false
[07:49:42 INFO]: This server is running Paper version 1.21.8-4-main@aa4ef06 (2025-07-17T23:33:28Z) (Implementing API version 1.21.8-R0.1-SNAPSHOT)
You are running the latest version
Previous version: 1.21.8-1-d8cb3f5 (MC: 1.21.8)
>
using wg 7.0.14 from here: https://dev.bukkit.org/projects/worldguard/files and paper 1.21.8 from papermc website.
This is not actionable without latest.log
This is not actionable without latest.log
https://mclo.gs/WAvnb1V
This looks like a Paper bug. It is aggressively closing the ClassLoader here which prevents the plugin loading any more classes during the shutdown. This will get masked if anyone disconnect at least once before shutdown, as it will cause relevant classes to be loaded. There is nothing for me to do, as WG manages the handlers.
The order of events are:
- Server starts.
- Player joins, WG attaches 3th party handlers to the session.
- Server shutdowns.
- Paper disables WGEF, disabling its
ClassLoader. - Next is WG, closing the session and notifying handlers.
- WGEF handler is notified, prompting class loading, which is prohibited now.
The latest paper build for 1.21.8 doesn't seem to give me this issue anymore. So either it was a one-off, or something got fixed that made this issue magically go away.
Feel free to close this if you're happy with that outcome.
ClassLoader related bugs are quite subtle and exhibit indeterministic behaviors based on multiple factors like order of operations, race conditions and other hard to debug scenarios so this is nothing unexpected.
The bug is most likely easy to reproduce with two specially crafted plugins to demonstrate the problem in the plugin unloading, I just haven't had the time to report it to Paper.