/ / OSGi बंडल से सापेक्ष पथ - जावा, फ़ाइल, पथ, ओस्गी

OSGi बंडल से सापेक्ष पथ - जावा, फ़ाइल, पथ, osgi

मेरे पास एक updater बंडल है जो एक में दिखता हैविशिष्ट फ़ोल्डर "बंडल" और स्थापित करने के लिए नए बंडल के लिए जाँच करता है और वर्तमान में स्थापित बंडल के लिए अद्यतन करता है। मूल निर्देशिका के अंदर, OSGi फ्रेमवर्क "/ फ्रेमवर्क" निर्देशिका में है, updater बंडल "/ system" निर्देशिका में है और निर्देशिका को जांचने की आवश्यकता है, वही मूल निर्देशिका में "/ bundles" निर्देशिका है। Updater बंडल के अंदर, एक रिश्तेदार पथ के साथ एक फ़ाइल ऑब्जेक्ट बनाया जाता है, लेकिन यह "./bundles" स्ट्रिंग के साथ काम नहीं कर रहा है, और मुझे नहीं पता कि जार फ़ाइल किस पथ के साथ सापेक्ष माना जाता है। मैं किसी भी अंतर्दृष्टि की सराहना करूंगा। या इस समस्या के बारे में जानकारी .. धन्यवाद, डेनिज़

संपादित करें: पहले ही पता चल गया। रास्ता ऐसा लगता है कि रूबी लिपि मैं इक्विनॉक्स शुरू करने के लिए उपयोग के अनुसार पथ को हल किया गया है। तो रिज़ॉल्यूशन पथ एक निर्देशिका है जिसे मैं रूबी सिस्टम का उपयोग करके "-कॉनसोल" ध्वज को पारित करके इक्विनॉक्स शुरू करता हूं। जवाब के लिए धन्यवाद, डेनिज़

उत्तर:

जवाब के लिए 3 № 1

नई फ़ाइल करना ("./ बंडल") निराकरण वर्तमान कार्य निर्देशिका के खिलाफ।

आप एक इनपुट स्ट्रीम प्राप्त करके और बंडलकॉन्क्स्ट # installBundle (स्ट्रिंग, इनपुटस्ट्रीम) को कॉल करके अपने बंडल को स्थापित कर सकते हैं।

OSGi ही फाइलसिस्टम के बारे में कोई धारणा नहीं बनाता हैलेआउट, या कि बंडल डिस्क पर भी हैं। लेकिन अगर आप अपने ढांचे के रूप में इक्विनॉक्स का उपयोग कर रहे हैं, तो आप "osgi.install.area" के खिलाफ अपने रिश्तेदार पथ को हल कर सकते हैं। स्थान सेवा यह आपको दे सकता है। और फिर बंडल को स्थापित करने के लिए निरपेक्ष पथ का उपयोग करें।

या, आप डिस्क पर इसे खोजने के लिए सिस्टम बंडल (बंडलकॉनटेक्स्ट.गेटबंडल (0)) प्राप्त कर सकते हैं, और फाइललोकेटर (org.eclipse.equinox.common) का उपयोग कर सकते हैं।


जवाब के लिए 2 № 2

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

new File("./bundles").getAbsolutePath();

उम्मीद है की यह मदद करेगा।


जवाब के लिए 0 № 3

पहले ही पता चल गया। रास्ता ऐसा लगता है कि रूबी लिपि मैं इक्विनॉक्स शुरू करने के लिए उपयोग के अनुसार पथ को हल किया गया है। तो रिज़ॉल्यूशन पथ एक निर्देशिका है जिसे मैं रूबी सिस्टम का उपयोग करके "-कॉनसोल" ध्वज को पारित करके इक्विनॉक्स शुरू करता हूं। जवाब के लिए धन्यवाद, डेनिज़