जावा में डायनामिक क्लासपाथ संशोधन: एक व्यापक गाइड
जावा अनुप्रयोगों को विकसित करते समय, क्लासपाथ को गतिशील रूप से संशोधित करना आवश्यक हो सकता है। यह क्षमता आपको क्लासपाथ रनटाइम से JAR फ़ाइलों को जोड़ने या हटाने की अनुमति देती है, जिससे आप अतिरिक्त लाइब्रेरी लोड कर सकते हैं या तुरंत एप्लिकेशन के व्यवहार को अनुकूलित कर सकते हैं।
आगे बढ़ने से पहले
आपको आश्चर्य हो सकता है कि किसी को क्लासपाथ को गतिशील रूप से संशोधित करने की आवश्यकता क्यों होगी। क्लोजर आरईपीएल (रीड-एवल-प्रिंट लूप) का उपयोग करते समय एक सामान्य परिदृश्य उत्पन्न होता है, जहां आप विशिष्ट क्लोजर स्रोत फ़ाइलों तक पहुंचने के लिए अतिरिक्त जेएआर फ़ाइलों को क्लासपाथ में लोड करना चाह सकते हैं। यह आवश्यकता क्लोजर को पुनरारंभ किए बिना उत्पन्न होती है, खासकर जब इसे Emacs पर Slime के साथ उपयोग किया जाता है। क्लासपाथ में JAR फ़ाइलों के लिए इंस्ट्रुमेंटेशन एपीआई और जावा एजेंट के उपयोग की आवश्यकता होती है। आप "लॉन्चर-एजेंट-क्लास" विशेषता का उपयोग करके लॉन्चर/मुख्य जार फ़ाइल के मैनिफ़ेस्ट में एक एम्बेडेड एजेंट निर्दिष्ट कर सकते हैं।
जावा 9 में सिस्टम क्लासलोडर विचार
प्रारंभ जावा 9 से, सिस्टम java.lang.ClassLoader अब java.net.URLClassLoader का उदाहरण नहीं है। इस परिवर्तन के लिए क्लासपाथ के बजाय मॉड्यूलपाथ को प्रभावित करने के लिए java.lang.ModuleLayer जैसे वैकल्पिक तरीकों के उपयोग की आवश्यकता होती है।
जावा 8 और इससे पहले के लिए डायनामिक क्लासपाथ संशोधन
जावा 8 और पुराने संस्करणों के लिए, क्लासपाथ बदलने में एक नया क्लासलोडर बनाना शामिल है। यहां विचार करने के लिए कुछ प्रमुख बिंदु दिए गए हैं:
सिस्टम क्लासपाथ को सीधे पोर्टेबल तरीके से संशोधित करना संभव नहीं है। आपको इसके बजाय एक कस्टम क्लासलोडर को परिभाषित करने की आवश्यकता है। अपना खुद का बनाने के बजाय।
यदि आप मानते हैं कि JVM का सिस्टम क्लासलोडर एक URLClassLoader है, तो आप सिस्टम क्लासपाथ को संशोधित करने के लिए प्रतिबिंब का उपयोग कर सकते हैं। हालाँकि, इसकी संभावित अस्थिरता के कारण यह अनुशंसित दृष्टिकोण नहीं है। क्लासपाथ को संशोधित करने के लिए URLClassLoader का उपयोग करें:अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3