ओएसजीआई दस्तावेज के अनुसार, ओएसजीआई को क्लासपाथ समस्याओं को रोकने में मदद के लिए डिज़ाइन किया गया है।ओएसजीआई: क्लासपाथ स्थिरता सुनिश्चित करने के लिए कैसे?
उदाहरण के लिए, "काम करते हुए OSGi" से:
ClassNotFoundExceptions जब आपके आवेदन शुरू करने क्योंकि वर्ग पथ सही नहीं था। ओएसजीआई यह सुनिश्चित करके मदद कर सकता है कि कोड कोड निष्पादित करने की अनुमति देने से पहले निर्भरताएं संतुष्ट हैं।
हालांकि, बाद से हम OSGi के लिए हमारी जावा आवेदन स्विच कर लें, मैं और अधिक ClassNotFoundExceptions और विशेष रूप से पहले से कहीं ज्यादा NoClassDefFoundErrors देखते हैं। कक्षाएं जिन्हें पहले ठीक से लोड किया गया था, अब ओएसजीआई क्लासलोडर द्वारा नहीं पाए जाते हैं, और इससे भी बदतर: आपको रन-टाइम पर त्रुटि मिलती है, जिसका अर्थ यह है कि आप आसानी से इसके आवेदन के हर कोने का परीक्षण करके इसे आसानी से जांच नहीं सकते हैं।
उदाहरण के लिए, हमारा आवेदन ओएसजीआई के तहत खुशी से चल रहा था, लेकिन हमें बीटा टेस्टर्स से रिपोर्ट मिली कि वे अब पीडीएफ में दस्तावेज़ निर्यात नहीं कर सके। वास्तव में, जब मैं इसे में देखा, मैंने पाया इस कार्यक्षमता के कारण होता है कि एक अपवाद लॉग इन करने की:
java.lang.NoClassDefFoundError: org/w3c/dom/Node
तो, OSGi वास्तव में यह हल करती है और अधिक से अधिक classpath समस्याएं पैदा कर रहा है?
और सबसे महत्वपूर्ण बात यह है कि मैं कैसे जांच सकता हूं कि मेरे क्लास-पथ सभी आवश्यक आयात-पैकेज विवरण आदि के साथ संगत है, से पहले मैंने बग रिपोर्ट में उनके बारे में पढ़ा?
हल "मैन्युअल रूप से अपने आवेदन के हर कोने परीक्षण के अलावा" - ईआरएम स्वचालित परीक्षण? (यह किसी भी आवेदन पर लागू होता है) यदि आपके पास माइग्रेट करने से पहले परीक्षण सूट थे तो आपने टेस्टर्स के सामने इन त्रुटियों को देखा होगा। यह जांचने के लिए कि आपके बंडल सही ढंग से तार करते हैं, आपको कुछ एकीकरण परीक्षण करने की आवश्यकता होगी - हम इसके लिए पैक्स परीक्षा का उपयोग कर रहे हैं और इसमें संक्षिप्त एकीकरण परीक्षण (वर्तमान बंडल और इसके सहयोगी) हैं और साथ ही साथ कुछ अंत तक परीक्षण (पूरे ऐप का परीक्षण)। – earcam