2010-03-16 9 views
5

मैंने पढ़ा है कि ओएसजीआई प्रति मॉड्यूल अलग-अलग क्लासलोडर्स का उपयोग करता है जो मॉड्यूल को उनकी निर्भरताओं के विभिन्न संस्करणों का उपयोग करने की अनुमति देता है .. साथ ही साथ उसी जेवीएम में सभी मॉड्यूल चलाते हैं।अलग-अलग वर्ग लोडर का उपयोग कैसे करें और उसी JVM में चलाएं? (ओएसजीआई)

यह कैसे काम करता है? यदि मॉड्यूल ए निर्भरता के संस्करण # 1 का उपयोग करता है और मॉड्यूल बी संस्करण # 2 का उपयोग करता है, तो क्या आप समस्या निवारण के रूप में मॉड्यूल बी को निर्भरता वर्ग का एक उदाहरण पास करते हैं, तो आप समस्या में भाग नहीं पाएंगे?

मुझे लगता है कि मॉड्यूल बी चोक करेगा अगर यह निर्भरता वर्ग के लिए एक अलग इंटरफेस की उम्मीद कर रहा था।

उत्तर

5

आप सही हैं कि असंगत निर्भरता समस्याएं पैदा कर सकती हैं। ओएसजीआई इन निर्भरताओं के पारगमन बंद होने की गणना करके और यह सुनिश्चित करता है कि संकल्प समय पर कोई भी नहीं है।

यह आपको आंतरिक/छिपी निजी निर्भरताओं के दौरान सार्वजनिक निर्भरता का पर्दाफाश करने की अनुमति देता है और इसके परिणामस्वरूप, इससे बचने के लिए अपनी कार्यान्वयन निर्भरताओं को छुपाएं। अच्छी बात यह है कि इस प्रकार अस्पष्ट रनटाइम त्रुटियों के बजाय बंडल रिज़ॉल्यूशन समय पर चेक किया जाता है।

विशेष रूप से आपके उदाहरण में, यदि ए और बी एक असंगत इंटरफ़ेस का उपयोग करता है, और ए बी पर निर्भर करता है, तो ए निर्भरता त्रुटि के साथ हल करने में विफल हो जाएगा। तो यह भी एक असंगत प्रकार को पारित करने में सक्षम नहीं होगा।

संबंधित मुद्दे