Spring JsonProcessingExceptin NoClassDefFoundError для шаблона отдыха

Я использую парсер Джексона, и он работает с моим шаблоном отдыха при запросе get, но когда я пытаюсь сделать сообщение, он выдает следующую ошибку:

web.util.NestedServletException: 
Handler processing failed; 
nested exception is java.lang.NoClassDefFoundError: com/fasterxml/jackson/core/JsonProcessingException

Я не знаю, что пошло не так. Я пытаюсь отправить почтовый запрос, и его тело должно быть объектом:

@RequestMapping(value = "dogCreated", method = RequestMethod.POST)
@ResponseStatus(HttpStatus.CREATED)
public String createDog(@ModelAttribute Dog dog, BindingResult result, Model model){
RestTemplate rest = new RestTemplate();
//      List< HttpMessageConverter<?> > messageConverters = new ArrayList< HttpMessageConverter<?> >();   
//      // empty list created
//
//      messageConverters.add( new MappingJackson2HttpMessageConverter() );      
//      messageConverters.add( new StringHttpMessageConverter() );

        rest.getMessageConverters().add(new MappingJackson2HttpMessageConverter());/*This is where the error occurs*/
        rest.getMessageConverters().add(new StringHttpMessageConverter());

        ObjectMapper mapper = new ObjectMapper();
        TypeFactory typeFactory = mapper.getTypeFactory();

        String response = rest.postForObject("https://rest-service.herokuapp.com/createDog", dog, String.class);
        System.out.println(response);

Я включил обе зависимости Джексона в свой pom.xml:

<dependency>
    <groupId>org.codehaus.jackson</groupId>
    <artifactId>jackson-core-asl</artifactId>
    <version>1.9.13</version>
</dependency>
<dependency>
    <groupId>org.codehaus.jackson</groupId>
    <artifactId>jackson-mapper-asl</artifactId>
    <version>1.9.13</version>
</dependency>

Кто-нибудь может сказать мне, где я ошибаюсь? Более конкретно, в нем говорится, что ошибка возникает в этой строке:

rest.getMessageConverters().add(new MappingJackson2HttpMessageConverter());

Любая помощь будет принята с благодарностью.

Это полная трассировка стека

org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.lang.NoClassDefFoundError: com/fasterxml/jackson/core/JsonProcessingException
    org.springframework.web.servlet.DispatcherServlet.triggerAfterCompletionWithError(DispatcherServlet.java:1303)
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:977)
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893)
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:967)
    org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:869)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:843)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
root cause

java.lang.NoClassDefFoundError: com/fasterxml/jackson/core/JsonProcessingException
    com.dogs.controller.DogController.createDog(DogController.java:42)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    java.lang.reflect.Method.invoke(Method.java:483)
    org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221)
    org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137)
    org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110)
    org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:776)
    org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:705)
    org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959)
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893)
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:967)
    org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:869)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:843)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
root cause

java.lang.ClassNotFoundException: com.fasterxml.jackson.core.JsonProcessingException
    org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1305)
    org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1157)
    com.dogs.controller.DogController.createDog(DogController.java:42)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    java.lang.reflect.Method.invoke(Method.java:483)
    org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221)
    org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137)
    org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110)
    org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:776)
    org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:705)
    org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959)
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893)
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:967)
    org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:869)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:843)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

person beginnerCoder    schedule 18.07.2015    source источник
comment
Можете ли вы добавить полный стек - это будет основная причина для noclassdef   -  person 6ton    schedule 18.07.2015
comment
@ 6ton Я добавил полную трассировку стека. Не знаю, слишком ли это полезно. Строка 42 - это выделенная мной строка, вызывающая трассировку стека.   -  person beginnerCoder    schedule 18.07.2015


Ответы (1)


Проблема в том, что вы используете очень старые зависимости, которые последняя версия Spring не поддерживает:

<dependency>
    <groupId>org.codehaus.jackson</groupId>
    <artifactId>jackson-core-asl</artifactId>
    <version>1.9.13</version>
</dependency>
<dependency>
    <groupId>org.codehaus.jackson</groupId>
    <artifactId>jackson-mapper-asl</artifactId>
    <version>1.9.13</version>
</dependency>

Поскольку указанные выше библиотеки немного изменились, вам нужно удалить эти зависимости и поставить новую:

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.5.4</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.5.4</version>
</dependency>

Измените это и посмотрите результаты. Если это сработает, сделайте это в соответствии с ответом.

person Paweł Głowacz    schedule 18.07.2015
comment
Спасибо, это именно то, чего мне не хватало !! - person beginnerCoder; 19.07.2015
comment
аналогичная проблема, я использую gradle: compile 'com.fasterxml.jackson.core:jackson-core:2.7.3' compile 'com.fasterxml.jackson.core:jackson-databind:2.7.3' - person Yang; 20.04.2016