एक वर्गपथ, कक्षाओं को लोड करने के लिए स्थानों की एक सूची है।
ये 'स्थान' या तो निर्देशिकाएं, या जार फाइलें हो सकती हैं।
निर्देशिकाओं के लिए, जेवीएम एक कक्षा को लोड करने के लिए एक अपेक्षित पैटर्न का पालन करेगा। यदि मेरे पास मेरी सीपाथ में निर्देशिका C: / myproject / कक्षाएं हैं , और मैं एक वर्ग com.mycompany लोड करने का प्रयास करता हूं। तो , यह com नामक एक निर्देशिका के लिए वर्ग निर्देशिका के तहत दिखेगा , फिर उसके नीचे एक निर्देशिका जिसे mycompany कहा जाता है , और अंत में यह Foo.class नामक फाइल की तलाश करेगा उस निर्देशिका में ।
दूसरे उदाहरण में, जार फ़ाइलों के लिए, यह उस वर्ग के लिए जार फ़ाइल खोजेगा। एक जार फ़ाइल वास्तव में ऊपर की तरह निर्देशिकाओं का सिर्फ एक ज़िपित संग्रह है। यदि आप एक जार फ़ाइल खोलते हैं, तो आपको ऊपर दिए गए पैटर्न के बाद निर्देशिकाओं और वर्ग फ़ाइलों का एक गुच्छा मिलेगा।
इसलिए JVM वर्ग की परिभाषा को खोजने के लिए शुरू से अंत तक एक वर्गपथ का पता लगाता है जब वह वर्ग परिभाषा को लोड करने का प्रयास करता है। उदाहरण के लिए, क्लासपाथ में:
सी: / MyProject / वर्गों; सी: /myproject/lib/stuff.jar; सी: /myproject/lib/otherstuff.jar
JVM निर्देशिका में देखने के लिए प्रयास करेंगे कक्षाएं पहले, बाद में stuff.jar और अंत में otherstuff.jar ।
जब आपको एक ClassNotFoundException मिलती है, तो इसका मतलब है कि JVM ने पूरे classpath को ट्रेस किया है और आपको जिस क्लास को रेफर करने का प्रयास किया गया है वह नहीं मिला। समाधान, जैसा कि अक्सर जावा दुनिया में होता है, आपके क्लासपाथ की जांच करना है।
आप कमांड लाइन पर एक java -cp और फिर अपना classpath कहकर एक classpath को परिभाषित करते हैं। ग्रहण जैसे आईडीई में, आपके पास अपने वर्गपथ को निर्दिष्ट करने के लिए एक मेनू विकल्प होगा।