Minecraft ค้างหรือหยุดทำงาน? วิธีแก้ไขข้อผิดพลาด IndexOutOfBoundsException
หากMinecraft Java Edition ปิดตัวลงด้วยข้อผิดพลาด IndexOutOfBoundsException ให้เริ่มต้นด้วยการตรวจสอบรายงานข้อผิดพลาดและ Stack Trace ข้อผิดพลาดนี้หมายความว่าโค้ด Java พยายามใช้ตำแหน่งในอาร์เรย์ สตริง หรือคอลเลกชันที่อยู่นอกช่วงที่ถูกต้อง ใน Minecraft โค้ดที่ล้มเหลวอาจมาจากตัวเกม ม็อด ตัวโหลดม็อด หรือปลั๊กอินเซิร์ฟเวอร์ ข้อความดังกล่าวเพียงอย่างเดียวไม่ได้พิสูจน์ว่าโลกของคุณเสียหายหรือ Minecraft ต้องการ RAM เพิ่ม
ดำเนินการตรวจสอบตามขั้นตอนด้านล่างตามลำดับ: บันทึกรายงาน เปรียบเทียบกับโปรไฟล์ที่สะอาด ตรวจสอบ Java runtime สำหรับเวอร์ชันเกมของคุณ จากนั้นแยกม็อดหรือข้อมูลเฉพาะโลก สำรองข้อมูลโลกที่สำคัญก่อนทำการทดสอบ
รูปภาพในคู่มือนี้เป็นภาพประกอบทั่วไป หน้าต่าง เส้นทาง เวลา เวอร์ชัน และตัวอย่างบรรทัดบันทึก ไม่ใช่ภาพหน้าจอจากการติดตั้งที่ทดสอบแล้ว หรืออินเทอร์เฟซตัวเรียกใช้งานที่ถูกต้องแม่นยำ
ความหมายของข้อยกเว้นใน Java
ดัชนีใน Java โดยทั่วไปจะเริ่มต้นที่ศูนย์ ลิสต์ที่มีห้ารายการจะมีตำแหน่งตั้งแต่ 0 ถึง 4 การขอตำแหน่งที่ 5 จะอยู่นอกช่วง Oracle อธิบายIndexOutOfBoundsExceptionว่าเป็นข้อยกเว้นขณะรันไทม์ที่เกิดขึ้นเมื่อดัชนีในสิ่งต่างๆ เช่น อาร์เรย์ สตริง หรือเวกเตอร์ อยู่นอกช่วงArrayIndexOutOfBoundsExceptionและStringIndexOutOfBoundsExceptionเป็นคลาสย่อยที่เฉพาะเจาะจงมากขึ้น
รายงานข้อผิดพลาดอาจแสดงบรรทัดเช่นนี้java.lang.IndexOutOfBoundsException: Index 5 out of bounds for length 5ถ้อยคำที่ใช้จะแตกต่างกันไปตามเวอร์ชันของ Java และโค้ดที่ทำให้เกิดข้อยกเว้น นี่คือข้อผิดพลาดเกี่ยวกับดัชนี ไม่เหมือนกับOutOfMemoryErrorการเพิ่มหน่วยความจำด้วย-Xmxไม่ใช่วิธีแก้ไขทั่วไปสำหรับดัชนีที่ไม่ถูกต้อง
หกขั้นตอนในการวินิจฉัยอุบัติเหตุ
1. ค้นหารายงานข้อผิดพลาดฉบับเต็มและระบุข้อมูลการติดตามการทำงานของโปรแกรม (stack trace)
สำหรับ Minecraft Launcher อย่างเป็นทางการ รายงานข้อผิดพลาดของ Java มักจะอยู่ในcrash-reportsโฟลเดอร์ภายใต้ไดเร็กทอรีของเกม บันทึกเกมล่าสุดจะอยู่ในlogs/latest.log. ตำแหน่งไดเร็กทอรีเกมเริ่มต้นทั่วไปมีดังนี้:
Windows:%appdata%\.minecraft
macOS:~/Library/Application Support/minecraft
ลินุกซ์:~/.minecraft
โปรแกรมเรียกใช้งานจากผู้พัฒนาภายนอกอาจจัดเก็บแต่ละอินสแตนซ์ไว้ในไดเร็กทอรีของตัวเอง ดังนั้นให้ใช้ตัวเลือกโฟลเดอร์อินสแตนซ์หรือเอกสารประกอบของโปรแกรมเรียกใช้งานนั้น สำหรับกรณีที่เซิร์ฟเวอร์ล่ม ให้ตรวจสอบคอนโซลเซิร์ฟเวอร์และบันทึกของเซิร์ฟเวอร์ รวมถึงรายงานของไคลเอ็นต์ด้วย
ภาพจำลองโปรแกรมดูบันทึกข้อผิดพลาด ตัวอย่างการจัดวางข้อยกเว้นและกรอบข้อความแสดงข้อผิดพลาดเท่านั้น ข้อมูลการติดตามข้อผิดพลาดของคุณอาจแตกต่างออกไป
ค้นหาในรายงานIndexOutOfBoundsExceptionโดยใช้คำว่า จากนั้นอ่านเฟรมที่อยู่ด้านล่างทันที และส่วน "ต้องสงสัย" หรือส่วนเกี่ยวกับม็อดที่อยู่ใกล้เคียง หากมี จดบันทึกเวอร์ชันเกม ตัวโหลด รายชื่อม็อด และสิ่งที่คุณกำลังทำอยู่เมื่อเกิดข้อผิดพลาด ชื่อม็อดในเฟรมเป็นเบาะแสที่มีประโยชน์ แต่ไม่ใช่หลักฐานยืนยันว่าม็อดเพียงอย่างเดียวเป็นสาเหตุ การทำงานที่ไม่เข้ากันอาจเกี่ยวข้องกับส่วนประกอบมากกว่าหนึ่งอย่าง
รายงานข้อผิดพลาดจะถูกเก็บไว้ในไดเร็กทอรีของเกม โดยเส้นทางโฟลเดอร์และชื่อไฟล์จะแตกต่างกันไปตามโปรแกรมเรียกใช้งานและระบบปฏิบัติการ
2. จำลองปัญหาในโปรไฟล์ที่สะอาด
สร้างหรือเลือกโปรไฟล์แยกต่างหากที่ไม่ได้รับการแก้ไขสำหรับMinecraft เวอร์ชันเดียวกัน โดยไม่มีม็อดหรือตัวโหลดแบบกำหนดเอง ลองทำแบบเดียวกันในโลกใหม่ชั่วคราว อย่าใช้ไฟล์บันทึกเกมที่สำคัญเพียงไฟล์เดียวของคุณเป็นตัวทดสอบครั้งแรก
หากโปรไฟล์ที่สะอาดใช้งานได้ แสดงว่าปัญหาอาจเกี่ยวข้องกับม็อด ตัวโหลด แพ็กทรัพยากร การตั้งค่าแบบกำหนดเอง หรือข้อมูลที่ใช้โดยโปรไฟล์เดิม วิธีนี้ช่วยจำกัดขอบเขตการค้นหา แต่ไม่ได้ระบุถึงม็อดใดม็อดหนึ่งโดยเฉพาะ หากโปรไฟล์ที่สะอาดก็ยังเกิดข้อผิดพลาด ให้เก็บรายงานไว้และตรวจสอบว่าข้อผิดพลาดเกิดขึ้นในโลกใหม่ ระหว่างการเริ่มต้น หรือหลังจากการกระทำบางอย่างเท่านั้น
การตั้งค่าโปรไฟล์ที่สะอาดหมดจดสำหรับ Minecraft เวอร์ชันเดียวกันนั้นเป็นพื้นฐานที่มีประโยชน์ ตัวเลือกที่แสดงในภาพเป็นเพียงตัวอย่างเท่านั้น
3. ตรวจสอบ Java runtime ให้ตรงกับเวอร์ชันที่กำหนดไว้
อย่าติดตั้ง Java เวอร์ชันสุ่มสี่สุ่มห้าเพียงเพราะคู่มือเก่าแนะนำไว้ รันไทม์ที่ต้องการจะขึ้นอยู่กับเวอร์ชันของ Minecraft และการตั้งค่าของตัวเปิดเกม โดยปกติแล้วตัวเปิดเกมอย่างเป็นทางการจะจัดการรันไทม์สำหรับการติดตั้งเกม หากคุณเลือกไฟล์ปฏิบัติการ Java แบบกำหนดเอง ให้ใช้ข้อกำหนดสำหรับเวอร์ชันที่คุณใช้งาน หรือกลับไปใช้การตั้งค่ารันไทม์ที่จัดการโดยตัวเปิดเกม
ตัวอย่างเช่น ในเอกสารเผยแพร่ของ Mojang สำหรับMinecraft Java Edition 26.1 ระบุว่าเกมต้องการ Java 25 และมีชุดพัฒนา OpenJDK 25 ของ Microsoft รวมอยู่ด้วย แต่ไม่ได้หมายความว่าควรบังคับใช้ Java 25 กับเวอร์ชันเกมที่เก่ากว่าหรือโปรแกรมเรียกใช้งานเกมจากผู้พัฒนาภายนอกทุกตัว ควรตรวจสอบเอกสารเผยแพร่และข้อกำหนดความเข้ากันได้ของโปรแกรมโหลดม็อดควบคู่กันไป
เวอร์ชันที่แสดงในภาพจำลองนี้เป็นเพียงตัวอย่างเท่านั้น โปรดตรวจสอบให้แน่ใจว่ารันไทม์ตรงกับเวอร์ชัน Minecraft และตัวเรียกใช้งานที่คุณใช้
4. แยกม็อดโดยไม่ต้องลบการตั้งค่าของคุณ
ก่อนทำการเปลี่ยนแปลง ใดๆ ให้คัดลอกไฟล์ Launcher หรืออย่างน้อยก็modsโฟลเดอร์นั้นไว้ก่อน ตรวจสอบให้แน่ใจว่าทุกม็อดใช้งานได้กับเวอร์ชัน Minecraft และ Loader ที่ติดตั้งไว้ และมีส่วนประกอบที่จำเป็นครบถ้วน จากนั้นลองย้ายม็อดจำนวนหนึ่งออกจากอินสแตนซ์ทดสอบชั่วคราว แล้วลองทำให้เกิดข้อผิดพลาดอีกครั้ง หากข้อผิดพลาดหยุดลง ให้ค่อยๆ ย้ายม็อดกลับเข้าไปทีละกลุ่มเล็กๆ จนกว่าจะพบสาเหตุที่ทำให้เกิดข้อผิดพลาด
เก็บไฟล์ต้นฉบับไว้แทนที่จะลบ ตรวจสอบหน้าโครงการหรือตัวติดตามปัญหาของม็อดที่ระบุเพื่อหาเวอร์ชันที่ตรงกับเวอร์ชันของคุณ ความขัดแย้งที่ทราบ หรือบันทึกการอัปเดต หากไม่มีม็อดใดม็อดหนึ่งอธิบายการเกิดข้อผิดพลาดได้ ให้ทดสอบการรวมกันของม็อดต่างๆ ที่เป็นไปได้ และแนบรายงานฉบับเต็มเมื่อขอความช่วยเหลือจากผู้สร้างม็อด
การทดสอบกับกลุ่มเล็กๆ ช่วยให้ระบุปัญหาความขัดแย้งของม็อดได้ง่ายขึ้น โดยไม่ต้องลบไฟล์ม็อดต้นฉบับ
5. ปกป้องโลกและทดสอบสำเนา
หากเกมล่มเฉพาะตอนเปิดโลกใดโลกหนึ่ง ให้ปิด Minecraft แล้วสำรองข้อมูลโลกนั้นไว้ก่อนลองทำการเปลี่ยนแปลงอื่นๆ คุณสามารถคัดลอกโฟลเดอร์บันทึกเกมที่เกี่ยวข้องsavesไปยังที่ปลอดภัย หรือใช้กระบวนการสำรองข้อมูลที่แนะนำโดยฝ่ายสนับสนุนของ Minecraft ทดสอบสำเนาของไฟล์บันทึกเกมที่ได้รับผลกระทบและโลกชั่วคราวใหม่แยกต่างหาก
หากการสร้างโลกใหม่ใช้งานได้ปกติ แต่การสร้างโลกสำเนาที่มีปัญหาเกิดข้อผิดพลาด สาเหตุอาจเกี่ยวข้องกับข้อมูลโลกที่บันทึกไว้ เอนทิตี้หรือบล็อกที่เพิ่มเข้ามาโดยม็อด หรือปัญหาเฉพาะเวอร์ชันของเกม ผลลัพธ์ดังกล่าวไม่ได้พิสูจน์ว่าไฟล์บันทึกเสียหาย หลีกเลี่ยงการลบไฟล์ภูมิภาค การแก้ไขlevel.datหรือการเรียกใช้ยูทิลิตี้ซ่อมแซม เว้นแต่รายงานจะชี้ไปที่ปัญหาข้อมูลเฉพาะ และคุณมีไฟล์สำรองที่ได้รับการตรวจสอบแล้ว
สร้างสำเนาของโลกแยกต่างหากก่อนทดสอบการเปลี่ยนแปลงที่อาจส่งผลกระทบต่อข้อมูลที่บันทึกไว้
หากโลกทดสอบใหม่ทำงานได้ แต่สำเนาสำรองของโลกที่ได้รับผลกระทบเกิดข้อผิดพลาด สาเหตุอาจเกี่ยวข้องกับไฟล์บันทึกนั้นหรือเนื้อหาในไฟล์บันทึกนั้น
6. ตรวจสอบฝั่งเซิร์ฟเวอร์หากเกิดปัญหานี้ในโหมดผู้เล่นหลายคน
หากเกมล่มเฉพาะตอนเข้าร่วมเซิร์ฟเวอร์ใดเซิร์ฟเวอร์หนึ่ง ให้ขอให้เจ้าของเซิร์ฟเวอร์ตรวจสอบบันทึกของเซิร์ฟเวอร์ในช่วงเวลาดังกล่าว เซิร์ฟเวอร์อาจใช้ปลั๊กอิน ม็อด หรือเวอร์ชันเกมที่ไม่เข้ากัน แม้ว่าไคลเอนต์ในเครื่องของคุณจะเป็นเวอร์ชันล่าสุดก็ตาม ผู้ดูแลเซิร์ฟเวอร์ควรสำรองข้อมูลเซิร์ฟเวอร์ ตรวจสอบว่าปลั๊กอินตรงกับซอฟต์แวร์เซิร์ฟเวอร์และเวอร์ชัน Minecraft และทดสอบการเปลี่ยนแปลงบนเซิร์ฟเวอร์สำเนาหรือเซิร์ฟเวอร์ทดสอบหากเป็นไปได้
โดยปกติผู้เล่นไม่สามารถแก้ไขข้อผิดพลาดของปลั๊กอินฝั่งเซิร์ฟเวอร์จากคอมพิวเตอร์ของตนเองได้ โปรดแชร์ข้อความแสดงข้อผิดพลาดที่เกี่ยวข้อง เวอร์ชันเกม และรายละเอียดของตัวโหลดเกมกับผู้ดูแลระบบ อย่าโพสต์โทเค็นบัญชี ที่อยู่ IP ส่วนตัว หรือข้อมูลส่วนบุคคลที่ไม่เกี่ยวข้องเมื่อแชร์บันทึก
ผู้ดูแลเซิร์ฟเวอร์ควรเปรียบเทียบบันทึกเซิร์ฟเวอร์และชุดปลั๊กอินเมื่อไคลเอนต์เชื่อมต่อเข้าสู่โลกมัลติเพลเยอร์
การตรวจสอบอย่างรวดเร็ว: สิ่งที่ต้องเปลี่ยนแปลงและสิ่งที่ไม่ควรสันนิษฐาน
เบาะแส การตรวจสอบถัดไปที่มีประโยชน์ อย่าคิดเอาเอง
IndexOutOfBoundsExceptionในเฟรมดัดแปลงตรวจสอบม็อด โหลดเดอร์ ส่วนประกอบที่จำเป็น และเวอร์ชันของเกม ทดสอบบนโปรไฟล์ที่คัดลอกมา นั่นหมายความว่าม็อดทุกตัวพังหมด หรือไม่ก็ต้องลบโลกทั้งใบทิ้งไป
อุบัติเหตุเกิดขึ้นในโลกเพียงโลกเดียวเท่านั้น สำรองไฟล์บันทึกเกมไว้ก่อน จากนั้นเปรียบเทียบไฟล์ที่ซ้ำกันกับโลกทดสอบใหม่ ข้อยกเว้นนั้นเองพิสูจน์ให้เห็นถึงการทุจริตในระดับโลก
OutOfMemoryErrorปรากฏขึ้นแทนโปรดใช้คำแนะนำในการแก้ไขปัญหาการจัดสรรหน่วยความจำจากฝ่ายสนับสนุนของ Minecraft การเพิ่ม RAM จะช่วยแก้ไขข้อผิดพลาดในการจัดทำดัชนีได้
มีเพียงเซิร์ฟเวอร์ผู้เล่นหลายคนเดียวเท่านั้นที่จะทำให้เกิดเหตุการณ์นี้ขึ้น ให้ผู้ดูแลระบบเปรียบเทียบบันทึกเซิร์ฟเวอร์ ปลั๊กอิน และเวอร์ชันของเซิร์ฟเวอร์ การติดตั้งโปรแกรมใหม่ฝั่งไคลเอ็นต์อาจช่วยแก้ไขปัญหาปลั๊กอินฝั่งเซิร์ฟเวอร์ได้
คำถามที่พบบ่อย
การเพิ่มขนาด RAM ของ Minecraft จะช่วยแก้ปัญหา IndexOutOfBoundsException ได้หรือไม่?
โดยปกติแล้ว ไม่ ข้อยกเว้นดังกล่าวอธิบายถึงดัชนีที่ไม่ถูกต้อง ควรเปลี่ยนการจัดสรรหน่วยความจำเฉพาะเมื่อบันทึกชี้ไปที่ปัญหาหน่วยความจำอื่น เช่นOutOfMemoryErrorและปฏิบัติตามคำแนะนำการสนับสนุน Minecraft ปัจจุบันสำหรับระบบของคุณ
ข้อผิดพลาดนี้หมายความว่าโลก Minecraft ของฉันเสียหายหรือเปล่า?
ไม่ครับ การที่เกมค้างขณะโหลดเซฟใดเซฟหนึ่ง อาจใช้เป็นเบาะแสในการวินิจฉัยปัญหาได้ แต่สาเหตุอาจมาจากข้อมูลที่ถูกแก้ไขโดยม็อด ปัญหาความเข้ากันได้ หรือบั๊กในเกม ควรสำรองข้อมูลไว้และเปรียบเทียบกับโลกใหม่ก่อนที่จะพิจารณาซ่อมแซมครับ
ฉันควรจะอัปเดต Java หรือ Minecraft ก่อนดี?
ขั้นแรก ให้บันทึกเวอร์ชันเกม ตัวเรียกใช้งาน ตัวโหลด และไฟล์ปฏิบัติการ Java ที่ใช้งานอยู่ให้ถูกต้อง จากนั้นตรวจสอบให้ตรงกับข้อกำหนดของเวอร์ชันที่วางจำหน่ายและม็อด สำหรับตัวเรียกใช้งานอย่างเป็นทางการ ให้หลีกเลี่ยงการเขียนทับรันไทม์ Java ที่จัดการโดยตัวเรียกใช้งานนั้น เว้นแต่จะมีเหตุผลด้านความเข้ากันได้ที่เฉพาะเจาะจง
ข้อมูลอ้างอิงอย่างเป็นทางการ