Ответ 1
JsonProcessingException является частью jackson-core-asl-x.x.x.jar. Убедитесь, что это часть вашего пути к классам.
Я не могу получить поддержку 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"/>
Я также загрузил библиотеки Jackson и добавил их в свой проект 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
. Я могу вставить полный журнал ошибок, если вам нужно.
JsonProcessingException является частью jackson-core-asl-x.x.x.jar. Убедитесь, что это часть вашего пути к классам.
Для банок Jackson v2 класс, который будет использоваться для bean, должен быть
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter" />
Для более старой версии jackson, org.springframework.http.converter.json.MappingJacksonHttpMessageConverter в порядке. Убедитесь, что файлы jar добавлены в библиотеку проекта.
Ответ anshul tiwari частично отражает проблему. Вот более полный ответ...
Когда Джексон сделал это до версии 2.0, основная библиотека была изменена с jackson-core-asl-x.x.x.jar на jackson-core-x.x.x.jar. При этом пути изменились. В версии 1, org.codehaus.jackson - это путь. В версии 2 он находится в файле com.fasterxml.jackson.core, если вы должны открыть файл jar.
Теперь, если у вас есть библиотеки версии 2, и вы видите org.codehaus.jackson ClassNotFoundException, это означает, что существует смешение версий. Некоторый код ожидает v1, но вы предоставили v2. Это возможно при использовании Spring, поэтому вам нужно быть осторожным, чтобы выбрать правильный файл jar для вашего кода.
ИЗМЕНИТЬ
Фактически, глядя на исходный код 3.2 Spring, org.springframework.http.converter.json.MappingJacksonHttpMessageConverter
все еще ссылается на материал org.codehaus, так что это случай, когда исходный код Spring должен импортировать правильный путь, и вы ничего не можете сделать разработчику сделать, чтобы использовать jackson 2.
Чтобы дополнить ответ 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>
Используйте его, как показано ниже: Надеюсь, он сработает.
http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd " по умолчанию-ленивым-INIT =" истинный" >
<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>