MC Toolkit

Poradniki / Rozwiązywanie problemów

Kod wyjścia to nie powód awarii, to wzruszenie ramion

Liczba nie mówi ci nic. Linijka nad nią mówi wszystko — i już leży w twoim folderze z logami.

Serwer Java, który umiera, wypisuje Exit Code 1 i się zatrzymuje. To cała wiadomość. Kod wyjścia 1 oznacza „proces zakończył się nieprawidłowo" — to kategoria, nie przyczyna, i obejmuje wszystko od brakującego folderu świata po moda, który rzuca wyjątkiem podczas ładowania klas.

Gdzie mieszka prawdziwa odpowiedź

Kod wyjścia wypisuje twój launcher albo panel hostingowy, nie gra. Przyczyna jest w logs/latest.log, a w przypadku awarii — w raporcie, który serwer zapisuje w crash-reports/. Czytaj log od końca, aż natrafisz na pierwszy Exception, Caused by: lub Failed to. Ta linijka wskazuje klasę, moda albo plik.

[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 to tutaj brakująca zależność, a nie uszkodzony świat. Kod wyjścia nie powiedział ci o tym nic.

Kody wyjścia, które faktycznie zobaczysz

KodZwykłe znaczenie
0Czyste zamknięcie — /stop albo restart z harmonogramu
1Watchdog zabił zawieszony tick, JVM odmówił startu albo launcher bądź loader modów zgłosił awarię
137Zabity przez system operacyjny, prawie zawsze przez OOM killer
143SIGTERM — orkiestrator kontenerów go zatrzymał

Kod 137 to ten, który ludzie błędnie odczytują jako awarię. JVM nie zawiódł; coś poza nim uznało, że proces zużył za dużo pamięci.

Java i Bedrock to nie ten sam problem

Dedykowany serwer Bedrock to inny program z własnym logowaniem, a porady pisane pod logi Java nie przełożą się na niego.

Zestawy z modami padają inaczej

Z modami pierwszy wyjątek jest często objawem. Mixin, który się nie zaaplikuje, wywołuje kaskadę, w której prawdziwym winowajcą jest pierwsza linia Mixin apply failed, a nie NoSuchMethodError trzydzieści linii dalej. Zanim zaczniesz szukać Exception, przeszukaj log pod kątem Mixin.

Sprawdzanie, czy serwer żyje

Log mówi ci, dlaczego umarł. Nie mówi, czy żyje teraz. Zapytanie o status na port serwera odpowiada na to jednym żądaniem. Narzędzie tutaj sprawdza serwery Java; Bedrock rozmawia przez UDP i potrzebuje własnego zapytania.

Wklej log do narzędzia Server Diagnostics, żeby wyciągnęło feralną linijkę, i skieruj je na swój host, by potwierdzić, że serwer faktycznie odpowiada.

Diagnostyka serwera →

Więcej poradników

Zobacz wszystkie →