2015-08-28 13 views
6

बनाने पर JAXBException जब मैं स्टैंडअलोन जावा प्रोग्राम के रूप में एप्लिकेशन चलाता हूं, तो यह अच्छी तरह से काम करता है। जब मैं इसे एक एप्लेट के रूप में चलाता हूं, तो यह निम्नलिखित stacktrace के साथ JAXBException फेंकता है।JAXB Context

  • jaxws-RT-2.2.1
  • -

    javax.xml.bind.JAXBException 
    - with linked exception: 
    [java.lang.NoSuchMethodException: com.sun.xml.internal.ws.developer.JAXBContextFactory.createContext([Ljava.lang.Class;, java.util.Map)] 
        at javax.xml.bind.ContextFinder.newInstance(Unknown Source) 
        at javax.xml.bind.ContextFinder.newInstance(Unknown Source) 
        at javax.xml.bind.ContextFinder.find(Unknown Source) 
        at javax.xml.bind.JAXBContext.newInstance(Unknown Source) 
        at javax.xml.bind.JAXBContext.newInstance(Unknown Source) 
    

    मैं classpath को जार निम्नलिखित जोड़ा -

    javax.xml.bind.JAXBException: jaxb.properties in package com/test/package does not contain the javax.xml.bind.context.factory property. 
        at javax.xml.bind.ContextFinder.find(Unknown Source) 
        at javax.xml.bind.JAXBContext.newInstance(Unknown Source) 
        at javax.xml.bind.JAXBContext.newInstance(Unknown Source) 
    

    जब मैं एक jaxb.properties जोड़ने के लिए, मैं नीचे त्रुटि मिलती है

  • jsr311-api-1.1.1
  • जर्सी-कोर-1.2
  • जर्सी-क्लाइंट-1.2

इस त्रुटि का कारण क्या है। क्या मुझे कोई निर्भरता याद आ रही है।

संपादित करें: मैं ब्राउज़र और विकास पर्यावरण दोनों पर जावा 7 u 59 का उपयोग कर रहा हूं।

+0

ऐसा लगता है कि आप libs संगत नहीं हैं। – Jens

उत्तर

0

जर्सी संस्करण 1.2 पुराना प्रतीत होता है। मुझे लगता है कि जर्सी 2.21 वर्तमान संस्करण है। इसके अलावा, आपको अपने प्रोग्राम को चलाने के लिए उपयोग कर रहे जेडीके/जेआरई का निरीक्षण करना चाहिए। क्या एप्लेट उसी वातावरण/जावा संस्करण में चलाता है जब आप इसे एप्लिकेशन के रूप में शुरू करते हैं?

0

सबसे पहले, आपको यह जांचना होगा कि आप एक ही जेआरई का उपयोग कर रहे हैं। आप here. कर सकते हैं और @LarsGendner ने उल्लेख किया - download JAXB 2.2। * जार, क्योंकि 1.2 पुराना है।

दूसरा: How can I use JAXB from an unsigned applet (without signing it)?

0

प्रदान की अपनी जानकारी के आधार पर, यहाँ मेरी आदानों हैं: इस विषय की जाँच करें। कृपया कुछ भी ध्यान दें जिसके लिए आपके इनपुट/आप-टू-ट्राई-आउट की आवश्यकता है, मैंने इसे <try-out> के रूप में चिह्नित किया है।

सबसे पहले <try-out> निम्नलिखित:

एक। सत्यापित करें कि आपको के रूप में एकाधिक जावा संस्करणों को नहीं देखा गया है: widnows-> नियंत्रण कक्ष-> जावा-> जावा टैब-> जावा स्थानों को देखें। असल में यह एक ही जेआरई का उपयोग कर अपने जावा एप्लिकेशन और एप्लेट को सुनिश्चित करना है।

अपना पहला अपवाद के बारे में:javax.xml.bind.JAXBException: jaxb.properties in package com/test/package does not contain the javax.xml.bind.context.factory property

यह JRE की समस्या एक JAXB कार्यान्वयन पता लगाने में सक्षम नहीं है। कृपया URL पर जाएं और "JAXB कार्यान्वयन की खोज" अनुभाग का पता लगाएं। यह कहा गया है कि निम्नलिखित 4 स्थानों JAXB कार्यान्वयन की पहचान के लिए उपयोग किया जाता है:

पैकेज स्तर की निर्देशिका
  • सिस्टम संपत्ति JAXB_CONTEXT_FACTORY
  • /META-INF/services/javax.xml लिए खोज रहे हैं पर
    1. ढूँढना jaxb.properties। सभी जारों में bind.JAXBContext फ़ाइल
    2. डिफ़ॉल्ट JVM विशिष्ट कार्यान्वयन।

    अब आपको यह अपवाद प्राप्त हो रहा है केवल ऐप्पल जावा एप्लिकेशन के लिए नहीं। आपने बताया कि जावा एप्लिकेशन और एप्लेट दोनों एक ही जेडीके + अतिरिक्त जार का उपयोग कर रहे हैं। एप्लेट और एप्लिकेशन पर्यावरण के बीच अंतर के बारे में सोचने का एकमात्र कारण ऊपर बिंदु 2 के कारण हो सकता है।

    <try-out> निम्नलिखित:

    b.Can आप देखें कि क्या आप प्रणाली संपत्ति के रूप में JAXB_CONTEXT_FACTORY निर्दिष्ट करते हैं जब आप जावा आवेदन (शायद ग्रहण या कुछ और के माध्यम से)

    ग चलाते हैं। हो सकता है कि आप अपने कोड में सभी सिस्टम गुणों को मुद्रित कर सकें:

    Properties props = System.getProperties(); 
    props.list(System.out); 
    

    और सत्यापित करें कि JAXB संदर्भ फ़ैक्टरी वहां सेट है या नहीं?

    आपके दूसरे अपवाद के बारे में: आपने jaxb.properties फ़ाइल को जोड़ने के बाद, आपको अपना दूसरा अपवाद प्राप्त हुआ। यह निम्नलिखित कारणों से हो सकता है: - अपवाद स्टैक ट्रेस दिखाता है कि आपने com.sun.xml.internal.ws.developer.JAXBContextFactoryJAXB.properties फ़ाइल में निर्दिष्ट किया हो सकता है। अब अगर आप फिर से URL देख सकते हैं और पता लगाने JAXBContext प्रदाता के लिए पहले कल्पना आवश्यकता: प्रदाता निम्न विधि हस्ताक्षर युक्त एक कार्यान्वयन वर्ग की आपूर्ति करनी होगी: यदि आप com.sun.xml.internal.ws.developer.JAXBContextFactory वर्ग की सामग्री Google यह भी अब

    public static JAXBContext createContext(Class[] classes, Map<String,Object> properties) throws JAXBException 
    

    , आप पर देख सकते हैं यह site कि इस श्रेणी में createConext() विधि नहीं है; यह केवल एक विधि कॉल createJAXBContext( परिभाषित करता है)। कृपया ध्यान दें कि इस कक्षा को आंतरिक रूप से com.sun.xml.internal.bind.api.JAXBRIContext द्वारा बुलाया गया है जो javax.xml.bind.JAXBContext वर्ग का विस्तार है।

    <try-out> निम्नलिखित:

    डी। आपको का jaxb.properties फ़ाइल में उचित मान निर्दिष्ट करना चाहिए जो createConext() ऑपरेशन को लागू करने वाली कक्षा को इंगित करता है।

    अंत में, अंतिम बिंदु: वहाँ possiblity है कि आप jaxb.properties में सही कारखाने को निर्दिष्ट कर रहे हैं लेकिन अपने मूल्य क्रम से नहीं उठाया जा सकता है और इसके बजाय क्रम अंक ऊपर 1-4 में निर्दिष्ट अन्य तंत्र से JAXB कार्यान्वयन मूल्य उठा है । यह जेवीएम रनटाइम में मौजूद कई जेएक्सबी फैक्ट्री कार्यान्वयन का मामला हो सकता है।

    ई:

    निम्नलिखित <try-out>। ऐसी स्थितियों में, इस post

  • +0

    हाय, इसका उत्तर देने के लिए अपना समय लेने के लिए धन्यवाद। – Acn

    +1

    @ACN: क्या आप कृपया मुझे बता सकते हैं कि आपने जो विकल्प उपलब्ध कराए हैं, वे आपके लिए क्या काम करते हैं? इससे दूसरों को शायद भी मदद मिलेगी। – ag112

    0

    अपवाद से मुझे पता चला कि आपका डब्ल्यूएस जावा rt.jar का जिक्र कर रहा है और क्लासपाथ में आपके द्वारा जोड़े गए जार का जिक्र नहीं कर रहा है, जावा जावा एंड्रॉइड ओवरराइड तंत्र का उपयोग करना सबसे अच्छा है। ।

    तो इससे मैं निष्कर्ष निकाल सकता हूं कि जार क्लासपाथ में बिल्कुल नहीं रखा गया है।

    0

    द्वितीय अपवाद: किस जार से संदर्भित कक्षा को चेक करें और उचित जार फ़ाइल को प्रतिस्थापित करें जिसमें createjaxbcontext विधि है।

    क्लासपाथ (jaxws-rt) में जार के उचित संस्करण का उपयोग करें।

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