2012-02-07 17 views
13

मैं वसंत के JSON समर्थन को काम नहीं कर सकता। मेरी वसंत-servlet.xml फ़ाइल में मैं निम्नलिखित लाइनों में शामिल हैं:स्प्रिंग एमवीसी और जेएसओएन, जैक्सन वर्ग को अपवाद नहीं मिला

<mvc:annotation-driven/> 
<context:component-scan base-package="my.packagename.here" /> 
<context:annotation-config /> 

<bean id="viewResolver" 
    class="org.springframework.web.servlet.view.InternalResourceViewResolver" 
    p:prefix="/WEB-INF/jsp/" p:suffix=".jsp" /> 

<bean id="jacksonMessageConverter" 
    class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"/> 

मैं भी जैक्सन पुस्तकालयों डाउनलोड किया है और उन्हें अपने ग्रहण परियोजना के लिए है और यह भी वेब-INF/lib फ़ोल्डर में जोड़ लिया है। जब jQuery getJSON विधि के साथ नियंत्रक को अनुरोध भेजने मैं निम्न त्रुटियां मिलती है:

javax.servlet.ServletException: Servlet.init() for servlet dispatcher threw exception 
java.lang.NoClassDefFoundError: org/codehaus/jackson/JsonProcessingException 
java.lang.ClassNotFoundException: org.codehaus.jackson.JsonProcessingException 

तुम्हें क्या लगता है समस्या है। मुझे लगता है कि यह मेरे spring-servlet.xml फ़ाइल के साथ कुछ करने के लिए है। यदि आपको आवश्यकता हो, तो मैं पूरे त्रुटि लॉग पेस्ट कर सकता हूं।

+0

जो जैक्सन जार आप जोड़ लिया है? – ggreiner

+0

जैक्सन-सब-1.9.4.jar – jyriand

+1

मुझे जैक्सन v2.0.1 जार के साथ एक ही समस्या है। जगह में सभी जार (कोर, एनोटेशन, डाटाबेस)। क्या आपने इस मुद्दे को किसी भी मौके से हल किया? – TMan

उत्तर

5

जेसनप्रोसेसिंग एक्सेप्शन जैक्सन-कोर-एएसएल-एक्स.एक्स.एक्स.जेजर का हिस्सा है। सुनिश्चित करें कि यह आपके क्लासपाथ का हिस्सा है।

+0

हाँ मेरे पास है, लेकिन अभी भी – jyriand

+0

काम नहीं कर सकता जैक्सन-कोर पैकेज में बस बैठे हुए देखें, अभी भी अपवाद प्राप्त हो रहा है –

43

जैक्सन वी 2 जार के लिए, वर्ग सेम के लिए प्रयोग की जाने वाली

<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter" /> 

बड़े जैक्सन संस्करण के लिए होना चाहिए, org.springframework.http.converter.json.MappingJacksonHttpMessageConverter ठीक है। सुनिश्चित करें कि जार फ़ाइलों को प्रोजेक्ट लाइब्रेरी में जोड़ा गया है।

+0

बहुत बहुत धन्यवाद, आपने मुझे बहुत मदद की। – Roman

10

अंशुल तिवारी का जवाब आंशिक रूप से समस्या को कैप्चर करता है। यहां एक और पूर्ण उत्तर दिया गया है ...

जब जैक्सन ने इसे संस्करण 2.0 में बनाया, तो कोर लाइब्रेरी जैक्सन-कोर-एएसएल-एक्स.एक्स.एक्स.जर से जैक्सन-कोर-एक्स.एक्स.एक्स.जेजर में बदल गई। इसके साथ, पथ बदल गए। संस्करण 1 में, org.codehaus.jackson पथ था। संस्करण 2 में, यह com.fasterxml.jackson.core में है यदि आप जार फ़ाइल खोलना चाहते हैं।

अब यदि आपके पास संस्करण 2 के पुस्तकालय हैं और आप org.codehaus.jackson ClassNotFoundException देख रहे हैं, तो इसका मतलब है कि संस्करणों का मिश्रण है। कुछ कोड v1 की उम्मीद कर रहे हैं लेकिन आपने v2 प्रदान किया है। वसंत का उपयोग करते समय यह निश्चित रूप से संभव है ताकि आपको अपने कोड के लिए सही जार फ़ाइल चुनने के लिए सावधान रहना पड़े।

संपादित

वास्तव में, 3.2 स्प्रिंग स्रोत कोड देख, org.springframework.http.converter.json.MappingJacksonHttpMessageConverter अभी भी org.codehaus सामान का संदर्भ तो यह एक मामले में जहां स्प्रिंग स्रोत कोड सही पथ आयात करने के लिए की जरूरत है और कोई बात नहीं है आप डेवलपर जैक्सन 2.

+0

यह उत्तर सिर्फ एक ईंट की दीवार के खिलाफ मेरे सिर को धक्का देने के 6 घंटे समाप्त हुआ। अगर मैं +10 कर सकता था। वसंत (4.1) का नवीनतम संस्करण जैक्सन 2 का उपयोग करता है। –

1

उपयोग करने के लिए बस अंशुल तिवारी जवाब पूरक कर सकते हैं, सेम टैग MVC अंदर जाना चाहिए: एनोटेशन चालक:

<mvc:annotation-driven> 
    <mvc:message-converters> 
     <bean 
      class="org.springframework.http.converter.ResourceHttpMessageConverter" /> 
     <!-- <bean --> 
     <!-- class="org.springframework.http.converter.xml.Jaxb2RootElementHttpMessageConverter" 
      /> --> 
     <bean 
      class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter" /> 
     <!-- <bean --> 
     <!-- class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" 
      /> --> 
    </mvc:message-converters> 
</mvc:annotation-driven> 
0

इसका इस्तेमाल की तरह नीचे: आशा है कि यह काम करेगा ..

http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd " डिफ़ॉल्ट-आलसी-init =" true ">

<context:component-scan base-package="com.vc.bmp.resource" /> 
<mvc:annotation-driven> 
    <mvc:message-converters> 
     <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"> 
      <!-- property name="prefixJson" value="true" /> 
      <property name="supportedMediaTypes" value="application/json" /--> 
      <property name="objectMapper"> 
       <bean class="com.fasterxml.jackson.databind.ObjectMapper"> 
        <property name="serializationInclusion"> 
         <value type="com.fasterxml.jackson.annotation.JsonInclude.Include">NON_NULL</value> 
        </property> 
       </bean> 
      </property> 
     </bean> 
    </mvc:message-converters> 
</mvc:annotation-driven> 

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