क्लासपाथ वह स्थान है जहां जावा कंपाइलर (कमांड: जावा) और JVM (कमांड: जावा) आपके अनुप्रयोग संदर्भ वाले वर्गों को खोजने के लिए दिखते हैं। किसी अन्य वर्ग को संदर्भित करने के लिए किसी एप्लिकेशन के लिए इसका क्या अर्थ है? सरल शब्दों में यह अपने कोड में कहीं उस वर्ग का उपयोग करने का अर्थ है:
उदाहरण:
public class MyClass{
private AnotherClass referenceToAnotherClass;
.....
}
जब आप यह (javac) संकलित करने के लिए संकलक AnotherClass वर्ग की आवश्यकता होगी प्रयास करें। वही जब आप अपना एप्लिकेशन चलाने का प्रयास करते हैं: JVM को अन्य क्लास क्लास की आवश्यकता होगी। इस वर्ग को खोजने के लिए javac और JVM किसी विशेष (सेट) स्थान (स्थानों) में दिखता है। उन स्थानों को क्लासपाथ द्वारा निर्दिष्ट किया गया है जो लिनक्स पर एक कॉलन अलग-अलग निर्देशिकाओं की निर्देशिका है (निर्देशिका जहां javac/JVM को किसी अन्य क्लास को ढूंढने के लिए देखना चाहिए)।
तो अपनी कक्षा को संकलित करने के लिए और फिर इसे चलाने के लिए, आपको यह सुनिश्चित करना चाहिए कि क्लासपाथ में अन्य क्लास क्लास वाली निर्देशिका है। तो फिर तुम इसे इस तरह आह्वान:
javac -classpath "dir1;dir2;path/to/AnotherClass;...;dirN" MyClass.java //to compile it
java -classpath "dir1;dir2;path/to/AnotherClass;...;dirN" MyClass //to run it
आमतौर पर वर्गों "समूह" जार फ़ाइलें/पुस्तकालयों कहा जाता है के रूप में आते हैं।इस मामले में आप यह सुनिश्चित करें कि जार AnotherClass क्लास वाली अपनी classpaht पर है बनाने के लिए है:
javac -classpath "dir1;dir2;path/to/jar/containing/AnotherClass;...;dirN" MyClass.java //to compile it
java -classpath ".;dir1;dir2;path/to/jar/containing/AnotherClass;...;dirN" MyClass //to run it
आप ऊपर के उदाहरण में कैसे एक वर्ग को संकलित करने के (MyClass.java) देख सकते हैं कार्यशील निर्देशिका में स्थित है और फिर संकलित कक्षा चलाएं (क्लासपाथ की शुरुआत में "।" नोट करें जो वर्तमान निर्देशिका के लिए खड़ा है)। इस निर्देशिका को कक्षापथ में भी जोड़ा जाना है। अन्यथा, JVM इसे ढूंढने में सक्षम नहीं होगा।
यदि आपके पास एक जार फ़ाइल में आपकी कक्षा है, जैसा कि आपने प्रश्न में निर्दिष्ट किया है, तो आपको यह सुनिश्चित करना होगा कि जार क्लासपाथ में भी है, साथ ही बाकी आवश्यक निर्देशिकाओं के साथ।
उदाहरण:
java -classpath ".;dir1;dir2;path/to/jar/containing/AnotherClass;path/to/MyClass/jar...;dirN" MyClass //to run it
या अधिक सामान्य (कुछ पैकेज पदानुक्रम कल्पना करते हुए):
java -classpath ".;dir1;dir2;path/to/jar/containing/AnotherClass;path/to/MyClass/jar...;dirN" package.subpackage.MyClass //to run it
आदेश हर classpath सेटिंग आप एक आवेदन चलाना चाहते हैं से बचने के लिए आप एक वातावरण चर को परिभाषित कर सकते क्लास्स्पैट कहा जाता है।
linux में, कमांड प्रॉम्प्ट में:
export CLASSPATH="dir1;dir2;path/to/jar/containing/AnotherClass;...;dirN"
या ~/.bashrc संपादित करें और अंत में कहीं न कहीं इस लाइन को जोड़ने;
हालांकि, कक्षा पथ लगातार परिवर्तनों के अधीन है, इसलिए हो सकता है कि आप क्लासपाथ को डीआईआर के कोर सेट पर सेट करना चाहें, जिसे आपको अक्सर चाहिए और फिर उस सत्र के लिए प्रत्येक बार क्लासपाथ को विस्तारित किया जाए। इस तरह:
export CLASSPATH=$CLASSPATH:"new directories according to your current needs"
[संभवतः जावा क्लासपाथ के भीतर निर्देशिका में सभी जार सहित) का संभावित डुप्लिकेट (https://stackoverflow.com/questions/219585/including-all-the-jars-in-a- निर्देशिका -within-the-java-classpath) – Stewart