2010-11-25 14 views
5

मुझे jboss में किसी समस्या के साथ मारा गया है। जब मैं सर्वर में मेरी .war तैनात करने के लिए प्रयास करते हैं, मैं इस निम्नलिखित त्रुटि मिलती है,कक्षा कास्ट अपवाद: com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl

java.lang.ClassCastException: com.sun.org.apache.xerces.internal.jaxp.SAXParserF actoryImpl cannot be cast to javax.xml.parsers.SAXParserFactory

, जिसमें से यह काफी स्पष्ट पुस्तकालयों का एक संघर्ष है कि वहाँ है। इसलिए, मैंने जार फ़ाइल को हटा दिया जिसमें xerces शामिल है, जो jaxp-ri-1.4.1.jar द्वारा हुआ था। अब, जब मैं फिर से तैनात करने के लिए प्रयास करते हैं, मैं इस नई त्रुटि मिलती है,

java.lang.NullPointerException 
    at org.apache.commons.digester.Digester.getXMLReader(Digester.java:944) 
    at org.apache.commons.digester.Digester.parse(Digester.java:1765) 
    at org.apache.struts.action.ActionServlet.initServlet(ActionServlet.java 

जहां यह शिकायत है कि यह एक्सएमएल पारसर्स नहीं मिल रहा।

तो, अब मेरे प्रश्न यह है कि क्या कोई जानता है कि समाधान क्या हो सकता है। कोई जैक्सप जार फ़ाइल जिसमें xerces पैकेज नहीं है?

अद्यतन

मैं था के रूप में here सुझाव दिया है और अब मैं एक नया त्रुटि है,

java.lang.NoClassDefFoundError: Could not initialize class com.sun.xml.bind.v2.model.impl.RuntimeBuiltinLeafInfoImpl 

जो जार मैं जो नष्ट कर दिया में से एक से एक वर्ग है SaxParserFactory :(

+0

हाय परिभाषित करना होगा, मैं के रूप में आप का सुझाव दिया था और अब मैं एक नया त्रुटि, java.lang.NoClassDefFoundError है: वर्ग com.sun आरंभ नहीं हो सका। xml.bind.v2.model.impl.RuntimeBuiltinLeafInfoImpl जो जार मैं जो नष्ट कर दिया में से एक से एक वर्ग है SaxParserFactory :( – Ozyman

+0

कोई जानकारी जो हम नव नष्ट कर दिया जार पर हो सकता था शामिल? –

उत्तर

2
शामिल

ऐसा प्रतीत होता है कि आपने गलत JAR हटा दिया है। मूल क्लासकास्ट अपवाद की सूचना मिली थी जब SAXParserFactoryImpl (जो SAXParserFactory का उप-प्रकार है) का उदाहरण दिया जा रहा है SAXParserFactory।

अपवाद इस तथ्य के कारण होने की संभावना है कि SAXParserFactoryImpl के दो उदाहरणों के बजाय JVM में लोड होने के बजाय SAXParserFactory के दो उदाहरण हैं। कास्टिंग के समय, एक अलग क्लासलोडर द्वारा लोड किया गया SAXParserFactory लौटा दिया गया जिसके परिणामस्वरूप अपवाद हुआ। इसलिए फिक्स आपके क्लासपाथ में जेएआर की पहचान करना है जिसमें SAXParserFactory के विरोधाभासी संस्करण हैं। पार्सर कार्यान्वयन को हटाने से बुद्धिमान नहीं हो सकता है, अगर कॉमन्स डायजेस्टर एक विशेष कार्यान्वयन की तलाश में है।

+0

जार मैं पहले हटाए गए jaxp था -ri-1.4.1.jar जिसने मुझे NullPointerException दिया। अब मैंने jaxp-api.jar हटा दिया। मैंने jarfinder.com का उपयोग किया जिसमें सभी जार सा xParserFactory मौजूद है और सभी जारों में से मेरे पास जैक्सपी-एपीआई है। – Ozyman

+0

मुझे लगता है कि यह सत्यापित करना एक अच्छा विचार होगा कि आपने अपनी परियोजना में इन जेएआर को कैसे विरासत में मिला है। XML को पार्स करने के लिए आपको या तो jaxp-ri-1.4.1.jar या jaxp-api.jar की एक प्रति की आवश्यकता नहीं है, खासकर जब आप सूर्य जेडीके का उपयोग कर रहे हों। जेडीके/जेआरई के पास आवश्यक एपीआई और पार्सर कार्यान्वयन है जिसका उपयोग किया जा सकता है। सबसे अच्छा, आपको Xerces लाइब्रेरी (केवल जरूरी जार के साथ) की आवश्यकता होगी, क्योंकि वितरण में कुछ JAR इस समस्या का कारण बनते हैं (xml-apis.jar विशेष रूप से Xerces 2.x से)। –

+0

हम अपने प्रोजेक्ट के लिए मेवेन का उपयोग करते हैं। तो, इसमें शामिल होना चाहिए था। आश्चर्यजनक रूप से pom.xml में इन जारों का कोई उल्लेख नहीं है। हमारी परियोजना एक वेबसाइसेस परियोजना है, इसलिए मैंने सोचा कि हमें उन्हें मार्शलिंग के लिए आवश्यकता हो सकती है।मैं कोशिश करता हूं और देखता हूं कि जब मैं jaxp- * फ़ाइलों को हटाता हूं तो क्या होता है। युक्तियों के लिए सभी तरह से धन्यवाद ... – Ozyman

2

मुझे अनुमान है ... आप जेबॉस 5.1 का उपयोग कर रहे हैं। यदि ऐसा है तो यह xml पार्सर और क्लासलोडिंग समस्या है। आप jboss-classloading.xml

देखें http://www.coderanch.com/t/523519/JBoss/Cast और http://www.mastertheboss.com/jboss-application-ser...oss-5-classloading-issues.html

+0

हां, यह शायद एक वर्ग लोडर मुद्दा होना चाहिए। –

+0

एक और बात: jboss-classloading.xml का उपयोग करना सरल है और हमें अपनी समस्याओं को बहुत तेज़ी से हल करने देता है, लेकिन कभी-कभी हमारे आवेदन का अधिक सावधानीपूर्वक विश्लेषण करना आवश्यक है। हमें यह सुनिश्चित करना चाहिए कि यह libs/class copnflict का मामला नहीं है। यह आसान नहीं है, लेकिन अगर हम नहीं करते हैं, तो हम परेशानी में पड़ सकते हैं। क्लासलोडिंग समस्याएं veeeery अजीब त्रुटियों का कारण बनती हैं। उदाहरण के लिए। मेरे मामले में मैं अपने ऐप को विस्फोटित युद्ध के रूप में तैनात करने में सक्षम था, लेकिन संग्रहीत युद्ध के रूप में नहीं। समाधान क्या हुआ? Jboss-classloading.xml और कुछ libs को हटा रहा है :) – patrycja

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