java - Create class with javassist and make it available -
मैं निम्न कार्य करना चाहता हूं:
try {class.forName ("MyClass" ); } पकड़ (क्लासनोटफौन्डई एक्सप्शन ई) {क्लासपूल पूल = क्लासपूल.गेट डीफॉल्ट (); CtClass cc = pool.makeClass ("MyClass"); Class.forName ( "MyClass"); }
मैंने इसे करने की कोशिश की है, लेकिन यह हमेशा से काम करने में प्रतीत नहीं होता ... यह एक संदर्भ में काम करता है, लेकिन दूसरे में एक ही कोड दूसरे "कक्षा" पर दुर्घटनाग्रस्त हो रहा है। ForName ("MyClass") "... कॉलिंग cc.toClass ()
हमेशा सही वर्ग लाता है, और कोशिश की है cc.writeFile ()
लेकिन इसमें कोई फर्क नहीं पड़ता। किसी तरह, कुछ मामलों में द्वितीय श्रेणी। ForName वर्ग पाता है, और अन्य मामलों में यह सिर्फ टूटता है ... क्या मुझे कुछ याद आ रहा है?
मुझे पता चला कि मेरा कोड विभिन्न क्लासलोडरों पर क्लास बना रहा था, जहां पर मैं इसे कॉल कर रहा था। मैंने निम्न कार्य करके यह हल किया:
कोशिश {class.forName ("MyClass"); } पकड़ (क्लासनोटफौन्डई एक्सप्शन ई) {क्लासपूल पूल = क्लासपूल.गेट डीफॉल्ट (); CtClass cc = pool.makeClass ("MyClass"); Cc.to क्लास (this.getClass ()। GetClassLoader (), this.getClass ()। GetProtectionDomain ()); Class.forName ( "MyClass"); }
उचित क्लासलोडर के साथ toClass
विधि को कॉल करने से चाल चलती है ... मैं बस पर अनिश्चित था कि किस क्लासलोडर को बनाया क्लास उपलब्ध हो जाएगा , लेकिन क्लासलोडर पैरामीटर के साथ की जाने वाली विधि मुझे बिल्कुल वही प्रदान करती है जो मैं चाहता था।
Comments
Post a Comment