2012-06-14 11 views
8

java.lang.VerifyError अपवाद के बारे में एक त्वरित प्रश्न। मैं एक त्रुटि है कि इस तरह दिखता है प्राप्त मान लीजिए:"कार्य करने के लिए असंगत तर्क" अपवाद संदेश

Java call terminated by uncaught Java exception: java.lang.VerifyError:(class: com/.../MyClassName, method: <init> signature: (Ljava/io/Reader;)V) Incompatible argument to function 

तुम मुझे समझ के साथ मदद कर सकते हैं क्या "init" और क्या "(Ljava/कब/रीडर;) वी)" भागों से संबंधित? वे मेरे लिए विधि नाम या हस्ताक्षर की तरह नहीं दिखते हैं, लेकिन मैं जावा से बहुत परिचित नहीं हूं। धन्यवाद!

उत्तर

7

यह त्रुटि का अर्थ है कि कहीं भी आपके कोड में, आपने तर्ककर्ताओं के गलत सेट में गुजरने वाले निर्माता (<init> विधि) को कॉल करने का प्रयास किया। अपेक्षित तर्क Reader ऑब्जेक्ट था।

इसका शायद यह मतलब था कि आपने पहले कक्षा फ़ाइल संकलित की थी, फिर वर्ग फ़ाइल को पुन: संकलित किए बिना किसी भी तरीके से कक्षा परिभाषा को बदल दिया। नतीजतन, आपका कोड उस फ़ंक्शन को कॉल करने का प्रयास करता है जो अब मौजूद नहीं है। कोड को पुन: संकलित करने का प्रयास करें और देखें कि क्या यह ठीक करता है।

आशा है कि इससे मदद मिलती है!

+0

धन्यवाद! समस्या यह है कि, प्रारंभ किए जा रहे ऑब्जेक्ट के प्रकार में दो कन्स्ट्रक्टर होते हैं, एक स्ट्रिंग लेता है और एक पैरामीटर के रूप में StreamReader लेता है। उस प्रकार का कोई अन्य संस्करण नहीं है जिसमें एक स्ट्रिंग लेने वाले निर्माता को याद आ रही है। यह विचित्र है। मुझे इस कोड के माध्यम से कदम उठाने का एक तरीका खोजना है। – Zoomzoom

+0

हमने आखिरकार यह पता लगाया कि लोड किए गए जावा वर्ग भ्रष्ट थे और उन्हें सभी वर्गों का पुनः लोड करना पड़ा। – Zoomzoom

3

यदि आप किसी एप्लिकेशन सर्वर पर अपना एप्लिकेशन चला रहे हैं, तो यह क्लास लोडिंग समस्या हो सकती है।

आपने लाइब्रेरी के खिलाफ अपना कोड संकलित किया है और जब आप अपना कोड चलाने का प्रयास करते हैं तो यह लाइब्रेरी के एक अलग (पुराने?) संस्करण के विरुद्ध चल रहा है।

पुरानी लाइब्रेरी में शायद उस विधि या निर्माता नहीं हैं।

+0

धन्यवाद। मैं सहमत हूं कि यह एक संस्करण विसंगति से संबंधित है। – Zoomzoom

0

बस एक अलग कारण का ट्रैक छोड़ने के लिए।

हमेशा एक एप्लिकेशन सर्वर (मेरे मामले में WildFly 10) पर, आप एक ही पुस्तकालय को मॉड्यूल पर और ईएआर lib पर लोड कर रहे हैं। यदि इस लाइब्रेरी में एक इंटरफ़ेस है जिसे मॉड्यूल द्वारा कार्यान्वित करने की आवश्यकता है, तो इससे दो अलग-अलग वर्ग लोडर द्वारा लोड किए गए समान वर्ग/इंटरफ़ेस को दो अलग-अलग प्रकार माना जाता है।

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