Spring MVC и JSON, класс Джексона не найден, исключение - PullRequest
13 голосов
/ 07 февраля 2012

Не могу получить поддержку Spring JSON.В мой файл spring-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"/>

Я также скачал библиотеки Джексона и добавил их в свой проект eclipse, а также в папку WEB-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 файлом.Я могу вставить весь журнал ошибок, если вам нужно.

Ответы [ 5 ]

43 голосов
/ 21 мая 2013

Для банок Jackson v2 класс, используемый для бобов, должен быть

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

Для более старой версии Джексона org.springframework.http.converter.json.MappingJacksonHttpMessageConverter можно использовать.Убедитесь, что файлы JAR добавлены в библиотеку проекта.

10 голосов
/ 06 июня 2013

Ответ Аншул Тивари частично отражает проблему.Вот более полный ответ ...

Когда Джексон сделал это до версии 2.0, библиотека ядра была изменена с jackson-core-asl-xxxjar на jackson-core-xxxjar.С этим пути изменились.В версии 1 путь к файлу был org.codehaus.jackson.В версии 2 он находится в com.fasterxml.jackson.core, если вам нужно открыть файл jar.

Теперь, если у вас есть библиотеки версии 2 и вы видите исключение org.codehaus.jackson ClassNotFoundException, это означает, что происходит смешивание версий.Некоторый код ожидает v1, но вы предоставили v2.Это, конечно, возможно при использовании Spring, поэтому вы должны быть осторожны, чтобы выбрать правильный файл jar для своего кода.

EDIT

Фактически, глядя на 3.2 источник Springcode, org.springframework.http.converter.json.MappingJacksonHttpMessageConverter все еще ссылается на материал org.codehaus, так что в этом случае исходный код Spring должен импортировать правильный путь, и разработчик ничего не может сделать, чтобы использовать jackson 2.

6 голосов
/ 07 февраля 2012

JsonProcessingException является частью jackson-core-asl-xxxjar.Убедитесь, что это часть вашего classpath.

1 голос
/ 17 июня 2014

Просто для дополнения ответа на вопрос anshul tiwari тег bean должен идти внутри mvc: annotation-driver:

<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 голосов
/ 21 октября 2016

Используйте его, как показано ниже: Надеюсь, что это будет работать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...