ข้อผิดพลาดขณะรันโปรแกรมที่พบบ่อย

Exception in thread "main" java.lang.NoClassDefFoundError: <ชื่อคลาสที่ต้องการรัน>

ข้อความนี้เกิดขึ้นเมื่อ java ต้องการโหลดคลาสเข้าสู่หน่วยความจำแต่ไม่พบคลาสที่ต้องการ (No class definition found) เหตุที่หาคลาสที่ต้องการไม่เจออาจเนื่องมาจากสาเหตุต่าง ๆ ดังต่อไปนี้
  1. ตอนสั่งรันโปรแกรมระบุชื่อคลาสไม่ถูก อาจเขียนชื่อคลาสที่ต้องการรันผิด หรือเขียนชื่อคลาสใน source code ผิดไปจากที่ตั้งใจ
  2. ชื่อคลาสที่สั่งรันอาจจะถูกต้องแล้วแต่ java interpreter หาแฟ้มคลาสที่ต้องการไม่พบ เนื่องจากไม่ได้ตั้งตั้งค่า directory ที่จาวาจะไปค้นหาคลาส (CLASSPATH) หรือตั้งค่าไม่ถูกต้อง กรณีที่คอมไพล์และรันผ่านทางโปรแกรม JEditPlus ถ้าไม่ได้ตั้งค่า CLASSPATH ให้กับระบบปฏิบัติการ ต้องตั้งค่า CLASSPATH ให้กับโปรแกรม JEditPlus ก่อนที่จะรันโปรแกรม ให้ดูวิธีใช้โปรแกรม JEditPlus ประกอบ
  3. ชื่อ directory หรือ path ที่นำไปสู่โฟลเดอร์ที่บรรจุแฟ้มคลาสที่ต้องการรันไม่ถูกต้องตามกฏการตั้งชื่อของจาวา จาวาจะถือว่าชื่อ directory ที่บรรจุคลาสเป็นชื่อ package ซึ่งชื่อ package ต้องเป็นไปตามกฏการตั้งชื่อตัวระบุ (identifier) เช่นเดียวกันชื่อคลาส เพราะฉะนั้น ชื่อ directory และ subdirectory ที่เกี่ยวข้องควรตั้งให้ถูกต้องตามกฏการตั้งชื่อ จะมีวรรค (space) หรืออักษรพิเศษอื่นใดนอกเหนือจาก underscore (_) ไม่ได้ ปัญหาที่พบบ่อยเกิดจาการเขียนโปรแกรมไว้ในโฟลเดอร์ My Documents ซึ่งชื่อโฟลเดอร์มี space ปนอยู่ด้วยจึงขัดกับกฏการตั้งขื่อ ถ้าบรรจุ source code หรือแฟ้มคลาสไว้ที่ desk top หรือโฟลเดอร์ที่อยู่ใต้ Desk Top หรือในโฟลเดอร์ Program Files ก็จะมีปัญหาเดียวกันเพราะชื่อโฟลเดอร์มี space ผสมอยู่ด้วยนั่นเอง กรณีที่ directory มี space ปะปนอยู่ด้วยนั้น อาจทำให้จาวาแจ้งชื่อคลาสในข้อความแสดงข้อผิดพลาดไม่ตรงกับชื่อคลาสที่เราต้องการรันก็เป็นได้