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.

Çöken bir Java sunucusu Exit Code 1 yazdırır ve durur. Bütün mesaj bundan ibarettir. Çıkış kodu 1 "süreç anormal şekilde sona erdi" 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ış kodu logs/latest.log dosyasının son satırıdır. Neden ondan önceki satırlardadır. Sondan geriye doğru, ilk Exception, Caused by: veya Failed to satırına denk gelene kadar oku. O satır sana sınıfın, modun ya da 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 göreceğin çıkış kodları

KodOlağan anlamı
0Temiz kapanış — /stop veya planlı bir yeniden başlatma
1İşlenmemiş istisna ya da JVM başlamayı reddetti
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. JVM başarısız olmadı; onun dışındaki bir şey sürecin çok fazla bellek kullandığına karar verdi.

Java ve Bedrock aynı sorun değildir

Bedrock'un sunucusu bedrock_server.log yazar ve Java tarzı bir çıkış kodu hiç üretmez — bunun yerine yığın izi ve bir Crash report satırı içeren bir çökme işleyicisi raporu döker. Java logları için yazılmış tavsiyeler buraya 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 de 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 an canlı olup olmadığını söylemez. Sunucu portuna yapılan bir TCP kontrolü bunu tek bir istekle yanıtlar ve hem Java hem de Bedrock için aynı şekilde çalışır, çünkü ikisi de bir soket üzerinden konuşur.

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.

Server Diagnostics →

Daha fazla rehber

Tümünü gör →

Başka Minecraft aracı mı arıyorsunuz?

Tarayıcıda çalışan üreteç, görüntüleyici ve dönüştürücü seti — hepsi ücretsiz.