MC Toolkit

Hướng dẫn / Khắc phục sự cố

Mã thoát không phải lý do crash, nó chỉ là cái nhún vai

Con số chẳng nói lên điều gì. Dòng ngay trên nó mới là tất cả, và nó đã nằm sẵn trong thư mục logs của bạn rồi.

Một server Java chết đi sẽ in ra Exit Code 1 rồi dừng. Chỉ có vậy. Mã thoát 1 nghĩa là "tiến trình kết thúc bất thường" — đó là một nhóm lỗi, không phải nguyên nhân, và nó bao trùm mọi thứ từ thiếu thư mục world cho đến một mod ném lỗi trong lúc nạp class.

Câu trả lời thật nằm ở đâu

Mã thoát là dòng cuối cùng của logs/latest.log. Nguyên nhân nằm ở những dòng trước đó. Hãy đọc ngược từ cuối lên cho đến khi gặp dòng Exception, Caused by: hoặc Failed to đầu tiên. Dòng đó sẽ nêu tên class, tên mod hoặc tên file.

[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 ở đây là thiếu dependency, chứ không phải world hỏng. Mã thoát chẳng cho bạn biết gì trong số đó.

Những mã thoát bạn thực sự sẽ gặp

Ý nghĩa thường gặp
0Tắt sạch sẽ — /stop hoặc khởi động lại theo lịch
1Ngoại lệ không được xử lý, hoặc JVM từ chối khởi động
137Bị hệ điều hành kill, gần như luôn là OOM killer
143SIGTERM — một trình điều phối container đã dừng nó

Mã 137 là mã mà người ta hay đọc nhầm thành crash. JVM không hề lỗi; một thứ gì đó bên ngoài quyết định rằng tiến trình đã dùng quá nhiều bộ nhớ.

Java và Bedrock không cùng một vấn đề

Server của Bedrock ghi ra bedrock_server.log và hoàn toàn không phát ra mã thoát kiểu Java — nó đổ ra một báo cáo crash handler kèm stack trace và một dòng Crash report. Những lời khuyên viết cho log của Java sẽ không áp dụng được cho nó.

Hệ mod lỗi theo cách khác

Khi có mod, ngoại lệ đầu tiên thường chỉ là triệu chứng. Một mixin áp dụng thất bại sẽ tạo ra một chuỗi lỗi, trong đó thủ phạm thật là dòng Mixin apply failed đầu tiên, chứ không phải dòng NoSuchMethodError ba mươi dòng sau đó. Hãy tìm Mixin trong log trước khi tìm Exception.

Kiểm tra xem server còn sống không

Log cho bạn biết vì sao nó chết. Nó không cho bạn biết bây giờ nó còn sống hay không. Một phép kiểm tra TCP vào cổng của server sẽ trả lời điều đó chỉ trong một request, và nó hoạt động giống nhau với cả Java lẫn Bedrock vì cả hai đều giao tiếp qua socket.

Hãy dán log vào công cụ Server Diagnostics để lọc ra dòng gây lỗi, rồi trỏ nó vào host của bạn để xác nhận server thực sự đang phản hồi.

Server Diagnostics →

Hướng dẫn khác

Xem tất cả →

Cần thêm công cụ Minecraft khác?

Bộ công cụ tạo, xem và chuyển đổi chạy ngay trên trình duyệt — tất cả đều miễn phí.