Symptoms: The server crashes unexpectedly, there are ERROR or SEVERE messages in the console, players get kicked, or the server halts after a specific action. This guide is for diagnosing and fixing Minecraft server errors systematically.
Possible Causes
- A Java exception (NullPointerException, IllegalArgumentException and so on) — an unexpected state in the code path
- OutOfMemoryError — the RAM allocated to the server is not enough, or there is a memory leak
- Plugin incompatibility — a gap between the server version and the plugin API version
- Corrupted data — a world region file, player data or a plugin database has been damaged
- Java version mismatch (UnsupportedClassVersionError)
- The file system is full or permissions are missing — the server cannot read or write
Step-by-Step Fix
Step 1
Look for the root cause of the error inside logs/latest.log. The last "Caused by:" line in the stack trace is the real reason
tail -100 logs/latest.log | grep -A 5 "Caused by:"Step 2
Go through all the ERROR and SEVERE messages in one pass
grep -iE "ERROR|SEVERE|Exception" logs/latest.log | tail -30Step 3
If there is a crash report, open it — Minecraft crash files give far more context
ls -lt crash-reports/ | head && cat crash-reports/$(ls -t crash-reports/ | head -1)Step 4
If the error comes from a plugin (its name appears in the log), disable it temporarily and try again
mv plugins/ProblematicPlugin.jar plugins/ProblematicPlugin.jar.disabledStep 5
Check that the plugin versions are compatible with your server version
grep -E "api-version|main" plugins/*/plugin.yml 2>/dev/nullStep 6
The Java version has to match the MC version: Java 21 for 1.20.5+, Java 17 for 1.17–1.20.4, Java 8–11 for 1.16 and below
java -version 2>&1 | head -1Step 7
Check how full the disk is — a full disk leads to plenty of strange errors
df -h $(pwd) && du -sh world* logs/ plugins/ backups/ 2>/dev/nullStep 8
Search the exception text on Google exactly as it is; adding "site:spigotmc.org OR site:github.com" gets you the community's fix by the short route
Step 9
For recurring errors use the KEYDAL Spark Analyzer tool — free automated comments
/spark profiler --timeout 120