StackOverflowError
插件或模组中的无限递归:它表现为什么样,最常见的原因是什么,以及为什么之后服务器会崩溃。
更新于 2026年8月13日
java.lang.StackOverflowError
at com.example.plugin.Handler.process(Handler.java:88)
at com.example.plugin.Handler.process(Handler.java:92)
at com.example.plugin.Handler.process(Handler.java:88)
...
堆栈中重复出现相同的行,说明发生了无限递归:代码不断调用自身,直到堆栈耗尽。
常见原因
| 情况 | 示例 |
|---|---|
| 插件之间相互触发事件 | 插件 A 捕获一个事件,并调用某个操作,而该操作又会触发同一事件 |
| 聊天插件处理自己的输出 | 消息 → 过滤 → 消息 |
| 脚本 — Skript | 一个事件调用某条命令,而该命令又会调用该事件 |
| 自定义配方和物品 | 一次合成产生另一次合成 |
该怎么办
- 找到堆栈最顶部的类——那就是罪魁祸首。
- 如果问题出在一对插件上,先移除其中一个再测试。
- 在脚本中查找循环:只要知道该往哪里看,通常一眼就能发现。
报错之后
发生报错的线程会终止。如果那是主线程,服务器就会崩溃或卡死。必须重启:StackOverflow 之后无法继续运行 — 服务器崩溃。
Minecraft 托管您离线时服务器仍在运行创建服务器
