2013-04-25 6 views
38

है, मैंने स्प्रिंग-एमवीसी और मैंगोडब डेटाबेस के रूप में एक वेब एप्लिकेशन बनाया है। मैंने एप्लिकेशन बनाने के लिए maven3 का उपयोग किया।असंगत क्लासChangeError: कक्षा ClassMetadataReadingVisitor इंटरफ़ेस क्लासविजिटर सुपर क्लास

प्रोजेक्ट सफलतापूर्वक बनाता है लेकिन जब एप्लिकेशन शुरू होता है तो मुझे लॉग में निम्न त्रुटि मिल रही है जिसके कारण मेरा एप्लिकेशन प्रारंभ नहीं होता है। यह कुछ महीने पहले काम करता था।

Caused by: java.lang.IncompatibleClassChangeError: class org.springframework.core.type.classreading.ClassMetadataReadingVisitor has interface org.springframework.asm.ClassVisitor as super class

कृपया मुझे बताएं कि क्या कोई पॉइंटर्स या यदि आपको अधिक जानकारी चाहिए।

उत्तर

70

यह त्रुटि तब होती है जब लोड की गई श्रेणी i.e. ClassMetadataReadingVisitor विरासत वाले अमूर्त वर्ग या इंटरफ़ेस के अनुबंध का सम्मान नहीं करता है यानी ClassVisitor

ऐसा लगता है कि लोड समय पर उपरोक्त वर्गों के विभिन्न संस्करण आपके मामले में लोड हो रहे हैं।

लगता है कि आपके आवेदन में आपके पास नया वसंत-कोर जार और पुराना वसंत-एएसएम जार है। ClassMetadataReadingVisitor कक्षा वसंत-कोर और ClassVisitorवसंत-एएसएम से लोड हो रही है।

आश्रित जार देखने के लिए कृपया maven dependency:tree कमांड का उपयोग करके जांचें।

+0

हां मैं वसंत जार के विभिन्न संस्करणों को देखता हूं। Mongodb निर्भरता नवीनतम जार खींच रहे हैं। मुझे इस मुद्दे को कैसे हल करना चाहिए? –

+0

चूंकि मोंगो निर्भरताओं को नवीनतम वसंत की आवश्यकता है, इसलिए आप अपनी वसंत निर्भरताओं को भी टक्कर देते हैं। लेकिन आपने कहा था कि यह अतीत में काम करता था जिसका अर्थ है कि मोंगो जार ने वसंत निर्भरता के लिए किसी संस्करण को परिभाषित नहीं किया है, इसलिए स्वचालित रूप से नवीनतम खींच लिया गया है। मोंगो जार पोम की जांच करें। –

+0

सूचक के लिए धन्यवाद। हां इसके मोंगो जार जो संस्करण निर्भरता को परिभाषित नहीं करते हैं। अभी के लिए मैंने नवीनतम वसंत संस्करण का उपयोग किया है। –

7

यह त्रुटि आमतौर पर तब दिखाई देती है जब जार के अपूर्ण संस्करणों का उपयोग किया जाता है, उदाहरण के लिए spring-asm और spring-coreforum.springsource.org/showthread.php?133341

41

वसंत संस्करण> 3.2.0 में, अब आपको spring-asm स्पष्ट रूप से शामिल करने की आवश्यकता नहीं है क्योंकि इसे पहले से ही spring-core में शामिल किया गया है।

अपनी बिल्ड परिभाषा से spring-asm हटाएं और सुनिश्चित करें कि spring-core है।

http://static.springsource.org/spring-framework/docs/current/spring-framework-reference/html/migration-3.2.html#migration-3.2-inline-asm

+2

इससे मुझे 'cglib' को हटाने में मदद मिली, जो' asm' पर निर्भर करता है। – sjngm

0

मैं एक ही समस्या थी और से pom.xml

यह पहले से ही spring-core निर्भरता में शामिल है मेरी spring-data-jpa निर्भरता को हटा कर यह सामना करना पड़ा।

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