2010-10-11 14 views
6

एक सामान्य जावा आवेदन के साथ classpath की सामग्री मुद्रित करने के लिए यह संभव है में:प्रिंटिंग ओएसजीआई बंडल क्लासपाथ?

String ss = System.getProperty("java.class.path"); 
System.out.println(ss); 

लेकिन मैं कैसे प्रिंट करूं एक OSGi बंडल के classpath ग्रहण PDE विज़ार्ड का उपयोग कर बनाई? सक्रियकर्ता में वर्तमान बंडल प्राप्त करना संभव है:

सार्वजनिक शून्य प्रारंभ (बंडल कॉन्टेक्स्ट संदर्भ) अपवाद को फेंकता है { super.start (संदर्भ); प्लगइन = यह;

Bundle b = context.getBundle(); 
// java doc: This bundle's class loader is not used to search for entries. 
b.findEntries(path, filePattern, recurse) 

लेकिन जावाडोक कहता है कि findEntries क्लास लोडर का उपयोग नहीं करता है। वर्तमान बंडल के क्लासपाथ पर क्या है/प्रिंट करने का कोई आसान तरीका है?

+1

पहला सवाल यह है कि आप ऐसा क्यों करना चाहते हैं? बंडल के लिए क्लासपाथ की कोई वास्तविक धारणा नहीं है, केवल कक्षाओं का एक सेट जो सुलभ है। –

+0

बस स्पष्ट होने के लिए: बंडल-क्लासपाथ (ओजीआई कोर 3.2.1.4) के नाम से जाना जाने वाला एक बंडल हेडर है, लेकिन आपका "java.class.path" उदाहरण दिया गया है, शायद यह आपका मतलब नहीं है। –

उत्तर

2

जैसा कि अन्य ने संकेत दिया है कि वास्तव में "बंडल क्लासपाथ" जैसी कोई चीज़ नहीं है - यह ओएसजीआई का पूरा बिंदु है। :)

आप क्या कर सकते है: अपने बंडल के हेडर पर

  • देखो जो पैकेज यह आयात करता है देखने के लिए, और वे आवश्यक हैं कि क्या है या अनिवार्य

  • उपयोग PackageAdmin बंडलों कि निर्यात को खोजने के लिए किसी दिए गए नाम के साथ संकुल

हालांकि AFAIK PackageAdmin हटा दिया गया है और एक नया/विस्तारित 4 में बंडल तारों के साथ काम करने तंत्र नहीं होगा .3।

ऐसा लगता है कि & लोड संसाधनों को खोजने के लिए क्लासपाथ स्कैनिंग के लिए आपकी असली प्रेरणा है। तथ्य यह है कि यह आसानी से संभव नहीं है मॉड्यूल सीमाओं को लागू करने का दुष्प्रभाव है: आपके पास बाड़ नहीं हो सकती है और साथ ही किसी को भी लॉन पर चलने की अनुमति मिलती है। एक मानक सेवा के लिए एक योजना थी जो क्लाइंट की तरफ से बंडल स्कैन करती है, लेकिन ऐसा लगता है कि वापस ले लिया गया है (सुनिश्चित नहीं है कि क्यों - शायद नई 4.3 चीजों के परिणामस्वरूप)।

+0

बताते हुए पैकेजएडमिन को हटा दिया गया है इसे दबा रहा है, क्योंकि यह निश्चित रूप से नवीनतम रिलीज चश्मे (आर 4.2) में अभी तक बहिष्कृत नहीं है। –

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