जब एक Maven परियोजना कई निर्भरता है कि निर्माण में परस्पर विरोधी पुस्तकालय संस्करण, उन निर्भरता के कुछ ही पुस्तकालय पर निर्भर करते हैं, लेकिन जो त्रुटियों खड़ी कर रहा है जब एक आवेदन चल रहा है एक अलग संस्करण का उपयोग करें।एक जावा Maven परियोजना
उदाहरण के लिए, यदि मैं दो अलग-अलग परियोजना निर्भरताओं को जोड़ता हूं, उदाहरण के लिए, यदि मैं दोनों अपाचे कॉमन्स http क्लाइंट पर निर्भर करता हूं लेकिन प्रत्येक एक अलग संस्करण पर निर्भर करता है, तो क्लास लोडर ए के अपाचे को http क्लाइंट क्लासेस को लोड करता है, बी कोशिश करेगा उनका उपयोग करने के लिए क्योंकि वे पहले ही कक्षा लोडर द्वारा लोड किए गए हैं।
लेकिन बी के बाईटकोड कई समस्याओं के कारण एप्लिकेशन चलते समय लोड वर्गों में से एक अलग संस्करण पर निर्भर करता है। एक आम तरीका methodnotfound अपवाद है (क्योंकि http क्लाइंट का ए संस्करण अब एक विशिष्ट विधि का उपयोग नहीं करता है)। सामान्य रणनीति जब इस तरह के टकराव से बचने के निर्माण
क्या है? क्या किसी को आम तौर पर एक दूसरे के साथ कॉल करने के लिए आम पुस्तकालयों को समझने के लिए निर्भरता पेड़ की जांच करनी पड़ती है?
ऐसा लगता है के रूप में मेरे मामले निर्भरता है कि हर कोई संतुष्ट नहीं कर सकते का है। यह मुख्य रूप से इसलिए है क्योंकि मैं लीगेसी सॉफ़्टवेयर को एकीकृत करता हूं (जो स्रोत मुझे दुखद रूप से नहीं दिया गया है), नए पुस्तकालयों के साथ जो सामान्य निर्भरताओं को साझा करते हैं। तो सब कुछ, सबसे अच्छा समाधान संकलन समय में त्रुटियों और चेतावनियां प्राप्त कर रहा है या उससे पहले यह संकेत करने के लिए कि मुझे कुछ मैन्युअल काम करने की आवश्यकता है। कम से कम यह मुझे तैनाती की परेशानी बचाता है और फिर संघर्षों को समझता है। प्रवर्धक प्लगइन उस दिशा की ओर अच्छा काम करता प्रतीत होता है। –
मैट्स द्वारा सही जवाब। मेरे लिए मैंने एक प्रश्न के साथ छोड़ा, क्यों विभिन्न संस्करणों के साथ कई जार एक साथ मौजूद नहीं हो सकते हैं? क्यों मॉड्यूल एक्स के संस्करण 0.1 के लिंक को मॉड्यूल बी के साथ लाइव नहीं करता है जो एक्स के संस्करण 0.2 से लिंक करता है? उत्तर है -> वर्ग के नाम के कारण: "वर्चुअल मशीन में लोड होने वाली प्रत्येक कक्षा को तीन चीजों द्वारा विशिष्ट रूप से पहचाना जाता है। इसका नाम, इसका पैकेज और इसका वर्ग लोडर।" से: https://kepler-project.org/developers/teams/framework/design-docs/trade-studies/custom-class-loading/using-multiple-classloaders। – Robocide