Error นี้เกิดตอน Runtime (java command) เมื่อ JVM หา Main Class ไม่เจอ สาเหตุหลัก 4 ข้อ
สาเหตุและวิธีแก้
1. ชื่อ Class ผิด (Typo)
D:\> javac Example.java D:\> java Exmple # Typo: Exmple แทน Example Error: Could not find or load main class Exmple
แก้: ใช้ชื่อ Class ให้ถูกต้อง java Example
2. Case Sensitivity ผิด
D:\> java EXAMPLE # ตัวพิมพ์ใหญ่ทั้งหมด Error: Could not find or load main class EXAMPLE Caused by: java.lang.NoClassDefFoundError: Example (wrong name: EXAMPLE)
แก้: ใช้ Case ให้ตรงกับ Class Declaration java Example
3. Package Name ผิด / ไม่ระบุ Package
// Example.java
package sample;
public class Example { ... }
D:\> javac -d . Example.java D:\> java samp.Example # Package ผิด (samp vs sample) Error: Could not find or load main class samp.Example
แก้: ใช้ Fully Qualified Name java sample.Example และรันจาก Root Directory (ที่มีโฟลเดอร์ sample)
4. ใส่ .class Extension (ห้าม)
D:\> java Example.class Error: Could not find or load main class Example.class
แก้: ไม่ต้องใส่ .class -> java Example
Checklist แก้ปัญหา
- Compile เรียบร้อยแล้ว? (
javacไม่มี Error) - รันจาก Directory ที่ถูกต้อง? (Root ของ Package Structure)
- ใช้ชื่อ Class ให้ถูกต้อง? (Case-Sensitive, No .class)
- ถ้ามี Package ใช้ Fully Qualified Name? (
package.Class) - Classpath ครบ? (
-cp .หรือ-cp jars/*)
ตัวอย่างคำสั่งที่ถูกต้อง
# Project Structure: # /project # /com/example/Main.class # /lib/dependency.jar cd /project java -cp ".;lib/*" com.example.Main # Windows java -cp ".:lib/*" com.example.Main # Linux/Mac
สรุป
Error "Could not find or load main class" = JVM หา .class ไม่เจอ ตรวจสอบ: ชื่อ Class, Case, Package, Classpath, Directory ปัจจุบัน, ไม่ใส่ .class