MC Toolkit

Rehberler / Sorun Giderme

Çıkış kodu bir çökme nedeni değil, bir omuz silkmektir

Sayı sana hiçbir şey söylemez. Üstündeki satır her şeyi söyler ve o satır zaten log klasöründe duruyor.

Ölen bir Java sunucusu Exit Code 1 yazdırır ve durur. Mesajın tamamı budur. Çıkış kodu 1 "süreç anormal şekilde sonlandı" demektir — bu bir kategori, bir neden değildir ve eksik bir dünya klasöründen sınıf yüklemesi sırasında hata fırlatan bir moda kadar her şeyi kapsar.

Gerçek cevabın yaşadığı yer

Çıkış kodunu oyun değil, başlatıcın veya barındırma panelin yazdırır. Neden logs/latest.log içindedir ve bir çökme durumunda sunucunun crash-reports/ altında kaydettiği rapordadır. Logun sonundan geriye doğru, ilk Exception, Caused by: veya Failed to satırına gelene kadar oku. O satır sana sınıfın, modun veya dosyanın adını verir.

[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

Buradaki NoClassDefFoundError bozuk bir dünya değil, eksik bir bağımlılıktır. Çıkış kodu sana bunların hiçbirini söylemedi.

Gerçekten karşılaşacağın çıkış kodları

KodOlağan anlamı
0Temiz kapanış — /stop veya planlanmış bir yeniden başlatma
1Watchdog takılan bir tick'i öldürdü, JVM başlamayı reddetti ya da bir başlatıcı veya mod yükleyici bir çökme bildirdi
137İşletim sistemi tarafından öldürüldü, neredeyse her zaman OOM killer
143SIGTERM — bir konteyner orkestratörü durdurdu

İnsanların çökme olarak yanlış okuduğu kod 137'dir. Başarısız olan JVM değildir; onun dışındaki bir şey sürecin çok fazla bellek kullandığına karar vermiştir.

Java ve Bedrock aynı sorun değildir

Bedrock'un dedicated sunucusu kendi loglaması olan farklı bir programdır ve Java logları için yazılmış tavsiyeler ona uymaz.

Modlu kurulumlar farklı şekilde çöker

Modlarla birlikte ilk istisna çoğu zaman bir belirtidir. Uygulanamayan bir mixin, gerçek suçlunun otuz satır sonraki NoSuchMethodError değil ilk Mixin apply failed satırı olduğu bir zincirleme tepki üretir. Exception aramadan önce logda Mixin ara.

Sunucunun ayakta olup olmadığını kontrol etmek

Bir log sana neden öldüğünü söyler. Şu anda canlı olup olmadığını söylemez. Sunucu portuna yapılan bir durum sorgusu bunu tek istekte yanıtlar. Buradaki araç Java sunucularını kontrol eder; Bedrock UDP konuşur ve kendi sorgusuna ihtiyaç duyar.

Logu Server Diagnostics aracına yapıştırarak hatalı satırı çıkarttır ve sunucunun gerçekten yanıt verdiğini doğrulamak için aracı sunucuna yönlendir.

Sunucu tanılama →

Daha fazla rehber

Tümünü gör →