java - ClassCastException when casting to the same class -


मेरे पास 2 अलग जावा परियोजनाएं हैं, इनमें से 2 वर्ग हैं

dynamicbeans.DynamicBean2

< P> dynamic.validator

अन्य परियोजना पर, मैं इन दोनों वर्गों को गतिशील रूप से लोड करता हूं और उन्हें किसी ऑब्जेक्ट पर संग्रहीत करता हूं

  class form {class beanClass; कक्षा सत्यापनकर्ता क्लास; सत्यापनकर्ता सत्यापनकर्ता; }  

तब मैं आगे बढ़ता हूं और validatorClass.newInstance () का उपयोग कर एक सत्यापनकर्ता वस्तु बना रहा हूं और इसे "मान्यक" पर संग्रहीत करता हूं, तब मैं बीन वस्तु का उपयोग करके beanClass.newInstance () का उपयोग करके भी जोड़ता हूं सत्र के लिए।

  portletRequest.setAttribute ("DynamicBean2", बीन); "फॉर्म" प्रोजेक्ट के जीवन चक्र के दौरान, मैं validator.validate () को कॉल करता हूं जो सत्र से पहले बनाई गई बीन ऑब्जेक्ट को लोड करता है (मैं websphere पोर्टल सर्वर चला रहा हूं)। जब मैं इस ऑब्जेक्ट को एक डायनेमिक बीन 2 में वापस डालने की कोशिश करता हूं तो क्लास क्लास अपस्टेपशन के साथ असफल हो जाता है।  

जब मैं ऑब्जेक्ट को सत्र के बाहर वापस खींच कर

  faces.getApplication () .createValueBinding ( "# {DynamicBean2}") getValue (चेहरे)।  

और .class () का उपयोग करके इसके वर्ग की जांच करें मुझे गतिशीलबीन मिलता है। डायनेमिकबैन 2। यह वह क्लास है जिसे मैं इसे डालना चाहता हूं, लेकिन जब मैं कोशिश करता / करती हूं कि मुझे क्लासकास्ट अपवाद मिलता है।

किसी भी कारण से मुझे यह मिल रहा है ??

मैं प्रोग्राम प्रवाह के आपके विवरण का काफी कुछ नहीं हूं, लेकिन आमतौर पर जब आप क्लास क्लास्ट अपवाद प्राप्त करते हैं तो आप समझा नहीं सकते कि आपने एक क्लासलोडर के साथ क्लास लोड किया है, तो उसे डालने का प्रयास करें एक और वर्ग लोडर द्वारा लोड किया गया एक ही वर्ग यह काम नहीं करेगा- वे जेवीएम के अंदर दो अलग-अलग क्लास ऑब्जेक्ट्स द्वारा प्रतिनिधित्व करते हैं और कलाकार विफल हो जाएगा।

मैं यह नहीं कह सकता कि यह आपके आवेदन पर कैसे लागू होता है, लेकिन संभावित समाधानों की एक संख्या है मैं कम से कम के बारे में सोच सकता हूं:

  1. संदर्भ वर्ग लोडर मैन्युअल रूप से बदलें। आवश्यक है कि आप वास्तव में एक उपयुक्त वर्ग लोडर का संदर्भ प्राप्त कर सकते हैं, जो आपके मामले में संभव नहीं है।

      थ्रेड।  
  2. सुनिश्चित करें कि क्लास पदानुक्रम में कक्षा लोडर द्वारा लोड किया गया है।

  3. सीरियल कर और deserialize उदेश्य। (युक!)

संभवत: आपकी विशेष परिस्थिति के लिए संभवतः एक उपयुक्त तरीका है।


Comments

Popular posts from this blog

python - Overriding the save method in Django ModelForm -

html - CSS autoheight, but fit content to height of div -

qt - How to prevent QAudioInput from automatically boosting the master volume to 100%? -