Minecraft crash report okumayı öğrenmek, sunucu yönetiminde tahmin yürütmekle kesin teşhis koymak arasındaki farktır. Java’nın ürettiği yığın izi ilk bakışta okunamaz görünür; oysa yapısı bellidir ve doğru satırı bulmak birkaç saniye sürer. Kural basittir: asıl neden en alttaki Caused by: bloğundadır, konsolun en son satırında değil.
Bu sayfada hangi dosyaya bakacağınızı, yığın izinin anatomisini, sık karşılaşılan istisna tiplerinin ne anlama geldiğini ve suçlu eklentiyi bulmanın sistematik yöntemini bulacaksınız. Örnekler Minecraft 26.2 ve Paper sunucu yazılımı üzerinden verildi.
Nereye Bakmalı?#
- logs/latest.log
- Son çalışmanın tam günlüğü. Sunucu her başladığında sıfırlanır, öncekiler
logs/2026-08-12-1.log.gzbiçiminde arşivlenir. - crash-reports/
- Yalnızca sunucu tamamen çöktüğünde dosya oluşur. Çökme anındaki iş parçacıkları, bellek durumu, sistem bilgisi ve yüklü mod listesi burada.
- logs/gc.log
- GC logu etkinleştirilmişse duraklama süreleri burada. Donma araştırmalarında vazgeçilmezdir.
- Konsol çıktısı
- Canlı akış. Sunucu açılışındaki ilk 30 saniyede basılan uyarılar en değerli olanlardır.
Dosyaları hızlıca taramak için:
ls -lt crash-reports/ | head -5
grep -n "Caused by:" logs/latest.log | head -20
zgrep -n "ERROR" logs/2026-08-11-*.log.gz | head
Get-ChildItem .\crash-reports\ | Sort-Object LastWriteTime -Descending | Select-Object -First 5
Select-String -Path .\logs\latest.log -Pattern "Caused by:" | Select-Object -First 20
Bir Crash Report’un Anatomisi#
Tipik bir sunucu crash report’u dört bölümden oluşur:
---- Minecraft Crash Report ----
// Uh... Did I do that?
Time: 2026-08-12 04:18:33
Description: Exception ticking world
java.lang.NullPointerException: Cannot invoke "org.bukkit.entity.Player.getWorld()"
because "player" is null
at com.ornek.eklenti.listener.MoveListener.onMove(MoveListener.java:64)
at org.bukkit.plugin.EventExecutor.execute(EventExecutor.java:79)
at net.minecraft.server.level.ServerLevel.tickNonPassenger(ServerLevel.java:812)
at net.minecraft.server.MinecraftServer.tickChildren(MinecraftServer.java:1394)
-- Affected level --
Details:
All players: 14 total; [ServerPlayer['oyuncu1'/1234, l='ServerLevel[world]']]
Chunk stats: 3421 chunks
Level dimension: minecraft:overworld
-- System Details --
Details:
Minecraft Version: 26.2
Java Version: 25.0.4, Eclipse Adoptium
Memory: 4127854080 bytes (3936 MiB) / 10737418240 bytes (10240 MiB) up to 10737418240 bytes
CPUs: 24
JVM Flags: 9 total; -Xms10G -Xmx10G -XX:+UseG1GC ...
Server Running: true
Plugins: 27 total; EssentialsX v2.22.0, LuckPerms v5.5.57, OrnekEklenti v1.2.0
| Bölüm | Ne anlatır | Ne aranır |
|---|---|---|
| Description | Çökmenin genel kategorisi | “Exception ticking world”, “Ticking entity”, “Initializing game” |
| Stack trace | Hatanın geçtiği kod yolu | En alttaki Caused by, ilk üçüncü taraf paket adı |
| Affected level | Hangi dünya ve chunk | Belirli bir bölgede tekrar ediyorsa koordinat |
| System Details | Sürüm, Java, bellek, eklenti listesi | Bellek doluluğu, JVM bayrakları, eklenti sürümleri |
com.ornek.eklenti.listener.MoveListener.onMove satırında oluşmuş. Bu paket adı net.minecraft veya org.bukkit ile başlamadığı için kesinlikle bir eklentiye aittir. Satır numarası (MoveListener.java:64) eklenti geliştiricisine bildirim yaparken çok işe yarar.Yığın İzini Doğru Okumak#
-
En alttaki Caused by bloğunu bulun#
Java hataları zincirlenir. Üstteki istisna bir sonucu, alttaki asıl nedeni gösterir. Bu yüzden okumaya sondan başlayın:
net.minecraft.ReportedException: Ticking entity at net.minecraft.server.level.ServerLevel.tickNonPassenger(ServerLevel.java:812) Caused by: java.lang.IllegalStateException: Chunk not loaded at net.minecraft.world.level.Level.getChunkAt(Level.java:244) Caused by: java.lang.NullPointerException: Cannot read field "world" at com.ornek.eklenti.task.SpawnTask.run(SpawnTask.java:31) <-- ASIL NEDEN -
İlk üçüncü taraf paket adını işaretleyin#
Yukarıdan aşağı inerken
net.minecraft,org.bukkit,io.papermcvejava.*dışındaki ilk paket adı sizin aradığınız yerdir. Bu adı eklenti klasöründeki jar adlarıyla eşleştirin. -
Hiç üçüncü taraf paket yoksa#
Yığın izi baştan sona
net.minecraftsatırlarından oluşuyorsa neden eklenti değildir. Bu durumda bakılacak yerler: bellek durumu, disk sağlığı, bozuk chunk dosyaları ve donanım. System Details bölümündeki Memory satırı ilk kontrol noktasıdır. -
Description satırını kategoriye çevirin#
Description Anlamı Exception ticking world Dünya güncellemesi sırasında hata; genelde blok veya redstone kaynaklı Ticking entity Bir varlık güncellenirken hata; mob veya item entity Ticking block entity Sandık, fırın, hopper gibi blok varlıkları Exception in server tick loop Ana döngü çöktü; en ciddi kategori Initializing game / Loading level Açılış aşamasında; genelde bozuk dünya ya da uyumsuz mod Watching Server Watchdog kilitlenme tespit etti Crash report Description satırlarının anlamları
Sık Karşılaşılan İstisnalar ve Anlamları#
| İstisna | Anlamı | Tipik nedeni | İlk adım |
|---|---|---|---|
NullPointerException | Boş bir nesneye erişildi | Eklenti hatası | Yığın izindeki eklenti adına bakın |
NoClassDefFoundError | Sınıf çalışma zamanında yok | 26.1 unobfuscation, eksik bağımlılık | Eklentinin 26.2 sürümünü indirin |
NoSuchMethodError | Metot imzası değişmiş | ABI kırılması, eski eklenti | Eklentiyi güncelleyin |
OutOfMemoryError | Heap doldu | Yetersiz RAM veya sızıntı | OOM sayfası |
UnsupportedClassVersionError | Java sürümü yetersiz | Yanlış JDK | Java sürüm sayfası |
ConcurrentModificationException | Koleksiyon eşzamanlı değiştirildi | Eklentinin thread hatası | Eklenti geliştiricisine bildirin |
StackOverflowError | Sonsuz özyineleme | Döngüsel eklenti mantığı, hopper zinciri | Şüpheli eklentiyi kaldırın |
ReportedException: Ticking entity | Varlık güncellemesinde çökme | Bozuk entity verisi | Bölgeyi bulun, entity temizleyin |
26.x Döneminin En Yaygın Çökme Nedeni#
26.1 ile Mojang obfuscated sunucu jar’ı yayınlamayı bıraktı. Bu bir ABI kırılmasıdır: Paper dahili remapper’ı tamamen kaldırdı, Spigot desteği düşürdü, Fabric Yarn’ı bırakıp Mojang Mappings’e geçti. Sonuç olarak 1.21.11 ve öncesindeki hiçbir mod ve NMS kullanan hiçbir eklenti yeniden derlenmeden 26.x üzerinde çalışmaz.
[09:14:22] [Server thread/ERROR]: Error occurred while enabling OrnekEklenti v1.2.0
java.lang.NoClassDefFoundError: net/minecraft/server/v1_21_R1/EntityPlayer
at com.ornek.eklenti.nms.PlayerUtil.<clinit>(PlayerUtil.java:18)
Caused by: java.lang.ClassNotFoundException: net.minecraft.server.v1_21_R1.EntityPlayer
v1_21_R1 gibi sürüm etiketli bir NMS paketi görüyorsanız neden kesindir: eklenti eski sürüm için derlenmiştir. Sunucuyu düşürmek yerine eklentinin 26.2 yapısını bulun; yoksa alternatif bir eklentiye geçin. Uyumluluk tablosu sürüm uyuşmazlığı sayfasında var.Watchdog Raporunu Okumak#
Sunucu çökmez ama tamamen donarsa Paper’ın watchdog iş parçacığı devreye girer ve tüm thread’lerin yığın izini basar. Bu rapor kilitlenmenin tam olarak nerede olduğunu gösterir:
[02:33:11] [Paper Watchdog Thread/ERROR]: The server has stopped responding!
[02:33:11] [Paper Watchdog Thread/ERROR]: Current Thread: Server thread
[02:33:11] [Paper Watchdog Thread/ERROR]: PID: 32 | Suspended: false | Native: false | State: RUNNABLE
[02:33:11] [Paper Watchdog Thread/ERROR]: Stack:
[02:33:11] [Paper Watchdog Thread/ERROR]: com.ornek.eklenti.db.MySQLStore.saveSync(MySQLStore.java:88)
[02:33:11] [Paper Watchdog Thread/ERROR]: java.sql.DriverManager.getConnection(DriverManager.java:681)
Bu örnekte bir eklenti veritabanı yazma işlemini ana thread üzerinde senkron yapıyor ve bağlantı beklerken sunucu tamamen duruyor. Yalnızca “Server thread” bölümüne bakın; diğer thread’ler genelde boştadır.
Suçluyu Sistematik Bulmak#
-
Raporda açık bir isim var mı?#
Yığın izinde bir eklenti paket adı görünüyorsa iş biter: o eklentiyi güncelleyin, yapılandırmasını gözden geçirin ya da kaldırın. Test edip doğrulayın.
-
İkili arama uygulayın#
Rapor belirsizse eklentileri yarıya bölün. 32 eklentiniz varsa beş denemede suçluyu bulursunuz:
mkdir -p plugins_disabled mv plugins/{A..M}*.jar plugins_disabled/ # ilk yarıyı devre dışı bırak # sunucuyu başlat, çökme tekrarlıyor mu? -
Temiz kurulumda test edin#
Boş bir klasörde eklentisiz temiz bir Paper 26.2 kurulumu yapın ve aynı dünyayı kopyalayın. Çökme burada da oluyorsa sorun eklentide değil dünya verisinde veya sunucu yazılımındadır.
-
spark ile profil çıkarın#
Donma ve yavaşlama vakalarında crash report değil profil gerekir:
/spark profiler start --timeout 120 /spark tickmonitor --threshold 100 /spark healthRapor okuma yöntemi spark ve timings analizi sayfasında anlatıldı.
-
Bozuk chunk aramayı deneyin#
Çökme hep aynı koordinatta oluyorsa bölge dosyası bozulmuş olabilir. Affected level bölümündeki chunk bilgisini not edin, yedekten o bölgeyi geri yükleyin.
Log Yönetimi ve Saklama#
Sorun yaşandığında elinizde geçmiş log olması teşhisi kolaylaştırır. Paper varsayılan olarak eski logları sıkıştırıp saklar; bunu bozacak şekilde temizlik yapmayın.
ls -lh logs/ | tail -10
zcat logs/2026-08-10-3.log.gz | grep -n "Caused by" | head
Get-ChildItem .\logs\ | Sort-Object LastWriteTime -Descending | Select-Object -First 10 Name,Length
Teşhis Araçları#
-
spark profilerÖnerilenİndir
-
Paper 26.2 sunucu jarİndir
-
Eclipse Temurin JDK 25LTSİndir
-
Notepad++ (log görüntüleyici)İndir
Bağlantılar resmî kaynaklara gider. JDK içindeki jcmd ve jstack araçları kilitlenme incelemesinde işinize yarar.
Çökme Sonrası Yapılacaklar#
- Crash report dosyasını silmeyin; başka bir yere kopyalayıp saklayın.
- Sunucuyu hemen başlatmadan önce dünyanın bütünlüğünü kontrol edin;
Region file … is corrupteduyarısı arayın. - Aynı çökme tekrarlıyorsa nedeni bulmadan sunucuyu otomatik yeniden başlatan bir betikle üstünü örtmeyin.
- Dünyada bozulma varsa son sağlam yedeğe dönmeyi değerlendirin.
- Bellek kaynaklı çökmelerde heap ve GC ayarlarını gözden geçirin.
İlgili Sayfalar#
- Out of Memory hatası — bellek kaynaklı çökmelerde.
- Can’t keep up uyarısı — çökme değil donma yaşanıyorsa.
- Java sürüm hatası — açılışta çöken sunucularda.
- Tüm Minecraft sunucu hataları ve çözümleri — pillar rehber.
Özetle#
Crash report okumak öğrenilebilir bir beceridir ve tek bir kurala dayanır: asıl nedeni en alttaki Caused by: bloğunda arayın. Yığın izinde net.minecraft ve org.bukkit dışında bir paket adı görüyorsanız suçlu odur; yoksa bellek, disk ve dünya verisine bakın. 26.x döneminde NoClassDefFoundError ve NoSuchMethodError hatalarının büyük bölümü 26.1 unobfuscation kırılmasından kaynaklanır ve çözümü eklentinin 26.2 yapısını indirmektir. Rapor belirsizse eklentileri ikili aramayla eleyin, donma vakalarında ise crash report yerine spark profili çıkarın.