मैंने ग्रहण में एक बंडल बनाया, और "अवलोकन" टैब के लिए "फ्रेमवर्क लॉन्च" लिंक का उपयोग किया। मैंने अपने बंडल में एक इंटरफेस (टेस्ट सर्विस) बनाया है, और कोड जिसके लिए प्रॉक्सी उत्पन्न करना चाहिए (हेल्पर में)। मैं बंडल के उत्प्रेरक में इस कोड को कहते हैं, और मिलती है:आप ओएसजीआई बंडल के अंदर जावासिस्ट क्लासपूल कैसे बनाते/प्रारंभ करते हैं?
Caused by: javassist.NotFoundException: com.test.services.TestService
at javassist.ClassPool.get(ClassPool.java:436)
at com.test.services.Helper.get(Helper.java:46)
यह पहली ClassPool.get() पर सही फेंकता है:
ClassPool pool = ClassPool.getDefault();
CtClass result = pool.get(TestService.class.getName());
...
TestService सार्वजनिक है और एक ही पैकेज में, और बंडल, हेल्पर के रूप में, जो अपवाद उत्पन्न करता है। जाहिर है, यह केवल "ClassPool.getDefault()" करने के लिए पर्याप्त नहीं है। तो मुझे ऐसा करने की क्या ज़रूरत है ताकि क्लासपूल बंडल के अंदर कक्षाओं को देख सके? क्या मुझे अपना खुद का पैकेज आयात करना है?
मुझे लगता है कि जावास्त्री बंडल को उन वर्गों की दृश्यता की आवश्यकता होगी जिन्हें आप लोड करने के लिए कह रहे हैं। दुर्भाग्यवश मुझे नहीं पता कि कैसे जावासवादी वर्गों को देखता है। क्या आप इसे बता सकते हैं कि कौन से क्लासलोडर का उपयोग करना है, या यह सिर्फ एक यादृच्छिक अनुमान लेता है? क्या इसे वास्तविक 'कक्षा' ऑब्जेक्ट्स के साथ कॉन्फ़िगर किया जा सकता है, या क्या यह स्ट्रिंग्स के रूप में आपूर्ति किए गए क्लासनामों पर जोर देता है? –
मैं सिर्फ जावासिस्ट से शुरुआत कर रहा हूं, इसलिए मुझे यकीन नहीं है, लेकिन मैं इस शाम को देखूंगा और आपको जवाब दूंगा। लेकिन, मुझे संदेह है कि आपने पहले से ही उस समस्या को इंगित किया है; ओएसजीआई उन बंडल को सीमित करता है जो बंडल देख सकते हैं, इसलिए जावस्सिस्ट बंडल के "आयात पैकेज" में अपना खुद का पैकेज जोड़ने के लिए पर्याप्त हो सकता है। –