Minecraft Java ExceptionInInitializerError: ค้นหาสาเหตุและแก้ไขปัญหาการหยุดทำงาน
หาก Minecraft Java หยุดทำงานระหว่างการเปิดใช้งานด้วยข้อความExceptionInInitializerErrorข้อความนั้นเป็นเพียงเบาะแส ไม่ใช่การวินิจฉัยปัญหา Java ใช้ข้อความนี้เพื่อรายงานว่าโค้ดล้มเหลวในขณะที่กำลังเริ่มต้นคลาส ให้ตรวจสอบข้อความ “Caused by” ในรายงานข้อผิดพลาดหรือบันทึกก่อน จากนั้นทดสอบโปรไฟล์เกมที่สะอาด ตรวจสอบรันไทม์ของ Java เฉพาะในกรณีที่มีการปรับแต่ง และแยกม็อดหรือแพ็กทรัพยากรออก วิธีการนี้ยังใช้ได้เมื่อการติดตามสแต็กกล่าวถึงการโหลดภาษา: การอ้างอิง “lang init” เพียงอย่างเดียวไม่ได้พิสูจน์ว่าไฟล์ภาษาเสียหาย
ExceptionInInitializerError หมายความว่าอย่างไรใน Minecraft
คลาส Java สามารถรันโค้ดการตั้งค่าเมื่อโหลดครั้งแรกได้ หากการเริ่มต้นแบบคงที่นั้นทำให้เกิดข้อยกเว้น Java สามารถแสดงExceptionInInitializerErrorเป็นข้อผิดพลาดภายนอกได้ รายละเอียดที่เป็นประโยชน์มักจะอยู่ลึกลงไปในร่องรอยของข้อยกเว้นดั้งเดิมหรือในห่วงโซ่ "Caused by" ของมันเอกสารอ้างอิง API ของ Javaอธิบายข้อผิดพลาดนี้ว่าเป็นความล้มเหลวระหว่างการเริ่มต้นแบบคงที่
ใน Minecraft คลาสที่เกิดข้อผิดพลาดอาจเป็นส่วนหนึ่งของเกม ไลบรารี ม็อด หรือเส้นทางการโหลดทรัพยากร หากร่องรอยการทำงานรวมถึงคลาสชื่อ Language หรือตัวจัดการภาษา/ทรัพยากร นั่นจะระบุว่าการเริ่มต้นใช้งานเกิดขึ้นที่ใด แต่ไม่ได้ระบุสาเหตุที่ทำให้เกิดข้อผิดพลาดโดยตัวมันเอง สาเหตุหลักอาจเป็นม็อดที่ไม่เข้ากัน การขาดส่วนประกอบที่จำเป็น รันไทม์ที่ไม่ถูกต้อง หรือทรัพยากรที่ผิดรูปแบบ อย่ามองว่า “ExceptionInInitializerError Lang Java Minecraft Error” เป็นรหัสข้อผิดพลาดที่ตายตัวและมีวิธีแก้ไขแบบเดียว
อ่านบันทึกข้อผิดพลาดก่อนทำการแก้ไขไฟล์
ปิดเกมและตัวเรียกใช้งาน จากนั้นคัดลอกไฟล์บันทึกและสำรองข้อมูลโลกก่อนที่จะเปลี่ยนอินสแตนซ์ สำหรับตัวเรียกใช้งานอย่างเป็นทางการ โฟลเดอร์เกมปกติจะอยู่%appdata%\.minecraftใน Windows, ~/Library/Application Support/minecraftmacOS หรือ~/.minecraftLinux เปิดlogs/latest.logเซสชันล่าสุด หาก Minecraft สร้างรายงาน ให้ตรวจสอบโฟลเดอร์นั้น ด้วย ตัวเรียกใช้งานจากผู้พัฒนาภายนอกอาจใช้โฟลเดอร์อินสแตนซ์ที่แตกต่างกัน คู่มือรายงานข้อผิดพลาดcrash-reportsของ Fabric อธิบายตำแหน่งเหล่านี้และวิธีการอ่านรายงาน
ค้นหา จากExceptionInInitializerErrorนั้นอ่านลงมาตามลำดับ "สาเหตุเกิดจาก" ที่สมบูรณ์ชุดแรก สังเกตข้อยกเว้นเฉพาะแรก รหัสคลาสหรือรหัสโมดที่เกี่ยวข้อง และดูว่าข้อผิดพลาดเกิดขึ้นในโหมดปกติหรือเฉพาะในโปรไฟล์ที่ติดตั้งโมดเท่านั้น
| เบาะแสบันทึก | สิ่งที่มันบ่งบอก | ตรวจสอบถัดไป |
UnsupportedClassVersionError | Java runtime ที่เลือกอาจเก่าเกินไปสำหรับโค้ดในเกมหรือม็อดนี้ | ตรวจสอบเวอร์ชันของเกมและไฟล์ปฏิบัติการ Java ของโปรไฟล์ |
| ม็อด มิกซ์อิน หรือส่วนประกอบที่ขาดหายไป | ม็อดอาจล้าสมัย ใช้กับตัวโหลดอื่น หรือขาดไลบรารีที่จำเป็น | ทดสอบโดยไม่ใช้ม็อดนั้น และตรวจสอบเวอร์ชัน Minecraft และตัวโหลดของมันด้วย |
| ข้อผิดพลาดในการแยกวิเคราะห์ JSON, ฟอนต์, เชเดอร์ หรือทรัพยากร | ชุดทรัพยากรหรือไฟล์อื่นๆ ที่โหลดมาอาจไม่ถูกต้องหรือไม่เข้ากันได้ | ปิดใช้งานแพ็กทรัพยากรที่กำหนดเองแล้วทดสอบอีกครั้ง |
| มองเห็นเฉพาะส่วนห่อหุ้มเท่านั้น | ข้อความที่ปรากฏให้เห็นนั้นไม่ได้ระบุสาเหตุที่แท้จริงด้วยตัวมันเอง | ใช้รายงานฉบับเต็มและเปรียบเทียบกับข้อมูลโปรไฟล์ที่ว่างเปล่า |
5 วิธีแก้ไขปัญหาการหยุดทำงานขณะเริ่มต้นใช้งาน Minecraft Java
1. ปกป้องโลกของคุณและบันทึกข้อผิดพลาดทั้งหมด
คัดลอกโฟลเดอร์ของอินสแตนซ์ที่ได้รับผลกระทบsavesไปยังที่ปลอดภัยก่อนทำการทดสอบ เก็บรายงานข้อผิดพลาดต้นฉบับและ ไฟล์ latest.logไว้ด้วย เพราะจะช่วยให้คุณเปรียบเทียบความพยายามต่างๆ ได้ อย่าลบconfigไฟล์assetsหรือ.minecraftโฟลเดอร์ทั้งหมดเป็นขั้นตอนแรก โฟลเดอร์เหล่านั้นอาจมีค่าการตั้งค่าและเนื้อหาที่ไม่เกี่ยวข้องกับความล้มเหลว และการลบแบบกว้างๆ จะทำให้ระบุสาเหตุได้ยากขึ้น
2. เปิดใช้งานโปรไฟล์วานิลลาที่สะอาดหมดจด
สร้างการติดตั้ง Minecraft Java ใหม่สำหรับเวอร์ชันเกมเดียวกัน แล้วเรียกใช้งานโดยไม่ใช้ Forge, Fabric, ม็อด หรือแพ็กทรัพยากรแบบกำหนดเอง หากตัวเรียกใช้งานของคุณอนุญาต ให้กำหนดไดเร็กทอรีเกมแยกต่างหากสำหรับการติดตั้งทดสอบ เพื่อไม่ให้ใช้ไฟล์ซ้ำกับอินสแตนซ์ที่มีปัญหา คู่มือช่วยเหลือของ Minecraft แนะนำให้ติดตั้ง Java ใหม่เป็นวิธีหนึ่งในการแก้ไขปัญหาการทำงานผิดพลาดของตัวเรียกใช้งานคำแนะนำอย่างเป็นทางการจะอธิบายขั้นตอนการทดสอบนั้น
หากเปิดโปรไฟล์ที่สะอาดได้สำเร็จ แสดงว่าปัญหาน่าจะอยู่ที่โปรไฟล์เดิม ม็อด หรือทรัพยากรของโปรไฟล์นั้น หากยังคงล้มเหลวด้วยข้อผิดพลาดเดิม ให้เก็บบันทึกการทำงานและดำเนินการตรวจสอบการติดตั้งต่อไปแทนที่จะเปลี่ยนม็อดซ้ำๆ
3. เลือก Java ให้ตรงกับเวอร์ชัน Minecraft ที่ถูกต้อง
อย่าคิดว่า Minecraft เวอร์ชันใหม่ๆ ทุกเวอร์ชันใช้ Java เวอร์ชันเดียวกันเสมอไป เอกสารบันทึกการเผยแพร่ของ Mojang ระบุข้อกำหนดที่แตกต่างกันไปตามแต่ละเวอร์ชัน: Minecraft 1.18 เปลี่ยนไปใช้ Java 17, 1.20.5 ต้องการ Java 21 และ 26.1 ต้องการ Java 25 เอกสารบันทึกของเวอร์ชัน 26.1 ยังระบุว่ารันไทม์ที่รวมอยู่คือ Microsoft OpenJDK 25 ตรวจสอบเอกสารบันทึกการเผยแพร่เพื่อดูเวอร์ชันที่แน่นอนที่คุณกำลังใช้งาน ตัวอย่างเหล่านี้ไม่ใช่เหตุผลที่จะบังคับใช้ Java 25 กับโปรไฟล์เวอร์ชันเก่ากว่า
หากคุณใช้ตัวเรียกใช้งานอย่างเป็นทางการและไม่ได้เปลี่ยนแปลงไฟล์ปฏิบัติการ Java ให้คงการเลือก Runtime ไว้ที่ค่าเริ่มต้นที่ตัวเรียกใช้งานจัดการไว้ หากคุณใช้ตัวเรียกใช้งานของบุคคลที่สามหรือตั้งค่าเส้นทาง Java ด้วยตนเอง โปรดตรวจสอบให้แน่ใจว่าโปรไฟล์ชี้ไปยัง Runtime ที่เข้ากันได้ เครื่องหมาย * UnsupportedClassVersionErrorบ่งชี้ถึงความไม่เข้ากันของ Java ได้ชัดเจนกว่าเครื่องหมาย * เพียงExceptionInInitializerErrorอย่างเดียว
4. แยกปัญหาความขัดแย้งของตัวโหลดและม็อดโดยไม่ต้องลบออก
ถ้าเล่นแบบปกติได้ ให้ปิด Minecraft แล้วย้ายmodsโฟลเดอร์ของอินสแตนซ์ที่มีปัญหาออกไปนอกไดเร็กทอรีเกมชั่วคราว จากนั้นเปิดโปรไฟล์ Forge หรือ Fabric เดิมโดยไม่มีม็อด หากเปิดได้ ให้ค่อยๆ ติดตั้งม็อดทีละกลุ่มเล็กๆ จนกว่าจะเกิดปัญหาขึ้นอีกครั้ง แล้วทดสอบกลุ่มสุดท้ายทีละม็อด วิธีนี้จะช่วยจำกัดสาเหตุโดยไม่ต้องทิ้งไฟล์ใดๆ
ตรวจสอบม็อดแต่ละตัวกับเวอร์ชันและตัวโหลดของ Minecraft อย่างละเอียด ม็อดของ Fabric ไม่สามารถใช้แทนกันได้กับม็อดของ Forge และม็อดที่สร้างขึ้นสำหรับ Minecraft เวอร์ชันหนึ่งอาจใช้งานไม่ได้กับอีกเวอร์ชันหนึ่ง ตรวจสอบให้แน่ใจว่ามีไลบรารีที่จำเป็นครบถ้วน และอัปเดตจากแหล่งที่เชื่อถือได้เท่านั้นคู่มือการติดตั้งม็อด ของ Fabric แนะนำให้ตรวจสอบความเข้ากันได้ของเวอร์ชัน ตัวโหลด และรุ่นของเกมโดยเฉพาะ ใช้การตรวจสอบความเข้ากันได้แบบเดียวกันกับโปรไฟล์ Forge ด้วย
5. ทดสอบแพ็กทรัพยากร จากนั้นซ่อมแซมเฉพาะโปรไฟล์ที่ได้รับผลกระทบ
หากเกมค้างขณะโหลดไฟล์ภาพ ฟอนต์ ข้อมูลภาษา หรือเชเดอร์ หรือรายงานชี้ไปที่การโหลดทรัพยากร ให้ปิดใช้งานแพ็กทรัพยากรแบบกำหนดเองแล้วลองใหม่อีกครั้ง หากเกมไม่สามารถเปิดค้างไว้ได้นานพอที่จะเปลี่ยนการตั้งค่า ให้ย้ายresourcepacksโฟลเดอร์ของเกมไปยังตำแหน่งสำรองชั่วคราว จากนั้นเปิดเกมขึ้นมาใหม่ กู้คืนโฟลเดอร์หลังจากนั้น และเปิดใช้งานแพ็กทีละรายการ
อย่าลบassets/langเส้นทางที่คาดเดาไว้เพียงเพราะข้อความแสดงข้อผิดพลาด (stack trace) กล่าวถึงการเริ่มต้นใช้งานภาษา ตัวเรียกใช้งาน (launcher) จะจัดการไฟล์เกมที่ดาวน์โหลดมา และคลาสภาษาในข้อความแสดงข้อผิดพลาดไม่ได้เป็นหลักฐานว่าไฟล์ใดไฟล์หนึ่งเสียหาย หากโปรไฟล์เวอร์ชันดั้งเดิมที่สะอาดหมดจดก็ยังล้มเหลว ให้ใช้ขั้นตอนการอัปเดตหรือติดตั้งใหม่ที่ตัวเรียกใช้งานรองรับสำหรับโปรไฟล์นั้น และตรวจสอบบันทึกที่บันทึกไว้ หลีกเลี่ยงการเพิ่มแฟล็ก JVM แบบสุ่มหรือการเพิ่มหน่วยความจำ เว้นแต่รายงานจะระบุปัญหาหน่วยความจำไม่เพียงพอจริงๆ การเปลี่ยนแปลงใดๆ ก็ตามไม่สามารถแก้ไขคลาสหรือม็อดที่ไม่เข้ากันได้
การเปิดใช้งานครั้งต่อไปจะทำให้การแก้ไขปัญหาทำได้ง่ายขึ้น
- สำรองข้อมูลโลกก่อนที่จะเปลี่ยนตัวโหลดเกม ชุดม็อด หรือเวอร์ชันเกม
- ควรแยกโฟลเดอร์เกมสำหรับม็อดแพ็กและเวอร์ชันทดสอบดั้งเดิมออกจากกัน หากตัวเปิดเกมของคุณรองรับฟังก์ชันนี้
- บันทึกเวอร์ชัน Minecraft เวอร์ชันตัวโหลด และไฟล์ปฏิบัติการ Java ที่ใช้ในโปรไฟล์การทำงาน
- อัปเดตม็อดให้เป็นชุดที่เข้ากันได้ และเก็บสำเนาไฟล์ที่ใช้งานได้ก่อนหน้านี้ไว้ด้วย
- เมื่อขอความช่วยเหลือ โปรดแชร์รายงานข้อผิดพลาดหรือบันทึกการทำงานทั้งหมด แทนที่จะแชร์เพียงบรรทัดแรกที่แสดงข้อผิดพลาดเท่านั้น และลบข้อมูลส่วนตัว เช่น ชื่อผู้ใช้ระบบปฏิบัติการของคุณออกก่อนที่จะโพสต์ลงในที่สาธารณะ
วิธีแก้ไขที่รวดเร็วและน่าเชื่อถือที่สุดคือการติดตามหลักฐาน: ค้นหาสาเหตุที่ซับซ้อน เปรียบเทียบกับโปรไฟล์ที่สะอาด และเปลี่ยนแปลงเฉพาะส่วนประกอบที่ร่องรอยบ่งชี้เท่านั้น วิธีนี้จะช่วยป้องกันไม่ให้ ข้อผิดพลาด Minecraft Java ExceptionInInitializerErrorกลายเป็นข้อมูลสูญหายโดยไม่จำเป็น หรือการเปลี่ยนแปลงตัวเรียกใช้งานที่ไม่เกี่ยวข้องมากมาย