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 nói lên 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. Đó là toàn bộ thông báo. 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 do trình khởi chạy hoặc bảng điều khiển hosting của bạn in ra, không phải do game. Nguyên nhân nằm trong logs/latest.log và, với một vụ crash, nằm trong báo cáo mà server lưu dưới crash-reports/. Hãy đọc ngược từ cuối log lên đến khi gặp dòng Exception, Caused by: hoặc Failed to đầu tiên. Dòng đó ghi rõ 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, 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

MãÝ nghĩa thường gặp
0Tắt sạch sẽ — /stop hoặc một lần khởi động lại theo lịch
1Watchdog giết một tick bị treo, JVM từ chối khởi động, hoặc trình khởi chạy hay mod loader báo crash
137Bị hệ điều hành giết, gần như luôn là do OOM killer
143SIGTERM — một trình điều phối container đã dừng nó

Mã 137 là cái 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 nó 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 chuyên dụng của Bedrock là một chương trình khác với hệ thống ghi log riêng, và những lời khuyên viết cho log của Java sẽ không áp dụng được cho nó.

Các bản mod lỗi theo kiểu 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 dây chuyền, 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 trong log từ khóa Mixin trước khi bạn 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 liệu bây giờ nó còn sống hay không. Một truy vấn trạng thái tới cổng của server sẽ trả lời điều đó chỉ trong một yêu cầu. Công cụ ở đây kiểm tra server Java; Bedrock nói chuyện qua UDP và cần truy vấn riêng của nó.

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ó tới host của bạn để xác nhận server có thực sự phản hồi không.

Chẩn đoán server →

Hướng dẫn khác

Xem tất cả →