Exit-Code ist kein Absturzgrund, sondern ein Schulterzucken
Die Zahl sagt dir nichts. Die Zeile darüber sagt dir alles, und sie liegt bereits in deinem Logs-Ordner.
Ein Java-Server, der stirbt, gibt Exit Code 1 aus und bleibt stehen. Das ist die ganze Meldung. Exit-Code 1 bedeutet „der Prozess wurde unnormal beendet" — es ist eine Kategorie, keine Ursache, und sie deckt alles ab, von einem fehlenden Weltordner bis zu einer Mod, die beim Laden der Klassen eine Exception wirft.
Wo die eigentliche Antwort steckt
Der Exit-Code ist die letzte Zeile von logs/latest.log. Die Ursache steht in den Zeilen davor. Lies vom Ende rückwärts, bis du auf die erste Exception, Caused by: oder Failed to stößt. Diese Zeile nennt die Klasse, die Mod oder die Datei.
[Server thread/ERROR]: Encountered an unexpected exception
java.lang.NoSuchMethodError: net.minecraft.world.level.Level.getBiome
at com.example.mod.ExampleMixin.inject(ExampleMixin.java:41)
Caused by: java.lang.NoClassDefFoundError: com/example/lib/Helper
NoClassDefFoundError ist hier eine fehlende Abhängigkeit, keine beschädigte Welt. Der Exit-Code hat dir nichts davon verraten.
Exit-Codes, die dir tatsächlich begegnen werden
| Code | Übliche Bedeutung |
|---|---|
| 0 | Sauberes Herunterfahren — /stop oder ein geplanter Neustart |
| 1 | Unbehandelte Exception, oder die JVM weigerte sich zu starten |
| 137 | Vom Betriebssystem getötet, fast immer durch den OOM-Killer |
| 143 | SIGTERM — ein Container-Orchestrator hat ihn gestoppt |
Code 137 ist derjenige, den Leute fälschlich als Absturz lesen. Die JVM ist nicht gescheitert; etwas außerhalb von ihr hat entschieden, dass der Prozess zu viel Speicher verbraucht hat.
Java und Bedrock sind nicht dasselbe Problem
Der Bedrock-Server schreibt bedrock_server.log und gibt überhaupt keinen Exit-Code im Java-Stil aus — er wirft einen Crash-Handler-Bericht mit Stacktrace und einer Crash report-Zeile aus. Ratschläge, die für Java-Logs geschrieben wurden, lassen sich darauf nicht übertragen.
Modded-Stacks scheitern anders
Mit Mods ist die erste Exception oft nur ein Symptom. Ein Mixin, das sich nicht anwenden lässt, erzeugt eine Kaskade, bei der der wahre Übeltäter die erste Mixin apply failed-Zeile ist, nicht die NoSuchMethodError dreißig Zeilen später. Durchsuche das Log nach Mixin, bevor du nach Exception suchst.
Prüfen, ob der Server läuft
Ein Log sagt dir, warum er gestorben ist. Es sagt dir nicht, ob er jetzt lebt. Ein TCP-Check gegen den Serverport beantwortet das mit einer einzigen Anfrage, und er funktioniert für Java und Bedrock gleichermaßen, weil beide über einen Socket sprechen.
Füge das Log in das Server Diagnostics-Tool ein, um die fehlerhafte Zeile herausgezogen zu bekommen, und richte es auf deinen Host, um zu bestätigen, dass der Server tatsächlich antwortet.