Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

Java:ไม่พบหรือโหลดคลาสหลัก

เมื่อทำงานกับ Java การประมวลผลโค้ดขั้นสุดท้ายจะเกิดขึ้นผ่านคลาสที่คอมไพล์ล่วงหน้า เมื่อคุณเขียนคลาสในภาษา Java คอมไพเลอร์จะแปลงซอร์สโค้ดระดับสูงของคุณเป็นโครงร่างระดับต่ำที่เรียกว่า bytecode สำหรับแต่ละคลาสที่คุณเขียน อินสแตนซ์ของ bytecode ที่คอมไพล์ล่วงหน้าจะถูกสร้างขึ้น ไบต์โค้ดนี้มีโค้ดระดับต่ำที่สามารถรันบน Java Virtual Machine

อย่างไรก็ตาม บางครั้งคุณอาจเคยเจอสถานการณ์ที่การรันคำสั่งเทอร์มินัล java ส่งคืนบางสิ่งเช่น:could not find or load main class . นี่แสดงว่ามีปัญหาบางอย่างกับ bytecode ของชั้นเรียนของคุณ แต่คุณจะแก้ไขได้อย่างไร? มาหาคำตอบกัน

อะไรคือ 'ไม่พบหรือโหลดคลาสหลัก' หมายถึงอะไร

ข้อผิดพลาด could not find or load main class บ่งชี้ว่ามีปัญหาบางอย่างเกี่ยวกับการออกแบบโค้ดของคุณ โดยปกติจะเกิดขึ้นเมื่อคุณเรียกใช้คำสั่งดังต่อไปนี้บนเทอร์มินัลของคุณเพื่อเรียกใช้โปรแกรม Java:

java Test

ที่นี่ "ทดสอบ" คือชื่อของคลาสที่มีรหัสของคุณที่ต้องดำเนินการ หากคุณพบ could not find or load main class ข้อผิดพลาดหมายความว่าไม่พบ bytecode สำหรับคลาสการทดสอบ

จะแก้ไขข้อผิดพลาด 'ไม่พบหรือโหลดคลาสหลัก' ได้อย่างไร

มีหลายวิธีที่คุณสามารถแก้ไขข้อผิดพลาดได้ ต่อไปนี้เป็นวิธียอดนิยมบางส่วนในการระบุและแก้ไข could not find or load main class :

ตรวจสอบการพิมพ์ผิด

สาเหตุที่เป็นไปได้ประการแรกของข้อผิดพลาดนี้อาจเกิดจากการพิมพ์ผิด เนื่องจากไวยากรณ์ของการเรียกโปรแกรมประกอบด้วยคำหลักเพียงสองคำเท่านั้น — “java” และชื่อคลาส — ที่เดียวที่คุณสามารถทำผิดพลาดได้คือชื่อคลาส หากคุณพิมพ์คำสำคัญผิด คุณจะได้รับข้อผิดพลาด "ไม่พบคำสั่ง" ที่ชัดเจนในบรรทัดคำสั่ง

คุณสามารถลองตรวจสอบชื่อชั้นเรียนอีกครั้งว่าพิมพ์ผิดหรือไม่ บ่อยครั้ง ข้อผิดพลาดดังกล่าวเกิดจากการสะกดผิดและพิมพ์ผิด

สมมติว่าคุณเขียนชั้นเรียนชื่อ "Test" ในไฟล์ "Test.java" นี่คือวิธีปกติที่คุณจะคอมไพล์ผ่านบรรทัดคำสั่ง:

81% ของผู้เข้าร่วมกล่าวว่าพวกเขารู้สึกมั่นใจมากขึ้นเกี่ยวกับโอกาสในการทำงานด้านเทคโนโลยีหลังจากเข้าร่วม bootcamp จับคู่กับ Bootcamp วันนี้

ผู้สำเร็จการศึกษาจากหลักสูตร bootcamp โดยเฉลี่ยใช้เวลาน้อยกว่าหกเดือนในการเปลี่ยนอาชีพ ตั้งแต่เริ่มต้น bootcamp ไปจนถึงหางานแรก

javac Test.java

จากนั้นคุณจะรันโดยใช้คำสั่งต่อไปนี้:

java Test

สิ่งนี้ควรรันโปรแกรมของคุณได้ดี อย่างไรก็ตาม หากคุณสะกดคำว่า “ทดสอบ” ในคำสั่งด้านบนผิด คุณอาจพบกับ could not find or load main class ผิดพลาด

คลาสพาธไม่ถูกต้องในแอปพลิเคชัน

มีหลายวิธีที่ classpath ของแอปพลิเคชันสามารถทำให้เกิดข้อผิดพลาดนี้ได้ classpath (เขียนเป็น CLASSPATH) เป็นตัวแปรสภาพแวดล้อมที่ชี้ไปยังตำแหน่งที่เก็บคลาสของผู้ใช้ไว้ในระบบ ไดเร็กทอรีที่ classpath ชี้ไปมีคลาสที่เขียนไว้ล่วงหน้าหลายคลาสที่คุณสามารถอิมพอร์ตในโค้ดของคุณได้โดยตรง

สมมติว่าคุณเขียนคำสั่งนำเข้าต่อไปนี้:

Import org.company.Foo;

การรันสิ่งนี้จะทำให้ JVM ค้นหาคลาส “Foo” ที่ตำแหน่ง /org/company/Foo.java อย่างที่คุณเห็น หาก classpath ชี้ไปยังที่อยู่ที่ไม่ถูกต้อง JVM จะไม่สามารถค้นหาคลาสที่คุณต้องการได้ ดังนั้นจึงโยน could not find or load main class ข้อผิดพลาด.

บางครั้ง classpath อาจไม่มีคลาสระบบทั้งหมดที่โปรแกรมของคุณต้องพึ่งพา ซึ่งหมายความว่าบางทีคุณกำลังพยายามรวมคลาสจากแพ็คเกจที่คุณยังไม่ได้ดาวน์โหลดหรือตั้งค่า ในกรณีนี้ คุณจะต้องเผชิญกับข้อผิดพลาดนี้เช่นกัน

คลาสได้รับการประกาศในแพ็คเกจที่ไม่ถูกต้อง

หากแพ็คเกจที่เขียนทับไฟล์ซอร์สโค้ดของคุณไม่ได้ชี้ไปที่แพ็คเกจ/โมดูลที่มีการประกาศคลาส IDE ส่วนใหญ่สามารถช่วยให้คุณเข้าใจสิ่งนี้ได้ง่ายมากโดยแสดงข้อผิดพลาดในกระบวนการที่เป็นขุย แต่ถ้าลืมตาจะทำให้เกิดข้อผิดพลาดข้างต้น

ทางออกที่ดีที่สุดสำหรับปัญหานี้คือการตรวจสอบเสมอว่าชื่อแพ็คเกจของคลาสชี้ไปที่แพ็คเกจที่ถูกต้อง หากคุณใช้ IDE ขั้นสูง เช่น IntelliJ หรือ VSCode ตรวจสอบให้แน่ใจว่าได้เปิดใช้งาน linting สำหรับปัญหานี้

ตัวอย่างเช่น ยกตัวอย่างคลาสต่อไปนี้ที่เก็บไว้ที่ project/src/com/foo/bar:

package com.foo.baz;
class Bar {
  // Some code here
}

อย่างที่คุณเห็น แพ็คเกจชี้ไปที่ com/foo/baz ในขณะที่คลาสถูกเก็บไว้ใน com/foo/bar ในการแก้ไขปัญหานี้ คุณต้องอัปเดตคำสั่งแพ็คเกจให้ชี้ไปที่แพ็คเกจที่ถูกต้อง:

package com.foo.bar;
class Bar {
  // Some code here
}

บทสรุป

ในบทความนี้ เรามาดูสิ่งที่ could not find or load main class อยู่ใน Java และเหตุใดจึงเกิดขึ้น จากนั้น เราสรุปการสนทนาโดยระบุวิธียอดนิยมในการแก้ไข could not find or load main class ข้อผิดพลาด.

หากคุณต้องการเขียนโปรแกรมใน Java ข้อผิดพลาดนี้อาจปรากฏขึ้นเป็นครั้งคราว

แม้ว่าข้อความแสดงข้อผิดพลาดอาจดูน่ากลัว แต่ก็ไม่ยากที่จะแก้ไข สิ่งที่คุณต้องทำคือตรวจสอบว่าชั้นเรียนที่คุณต้องการอยู่ในตำแหน่งที่ถูกต้องหรือไม่