Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Spring 4.2.3 and fasterxml Jackson 2.7.0 are incompatible

After migration from fasterxml.jackson 2.6.3 to 2.7.0. This is because public JavaType constructType(Type type, Class<?> contextType) method used in Spring's AbstractJackson2HttpMessageConverter was removed. How to fix this? I am using Spring 4.2.3.

/signin/facebook java.lang.NoSuchMethodError: com.fasterxml.jackson.databind.type.TypeFactory.constructType(Ljava/lang/reflect/Type;Ljava/lang/Class;)Lcom/fasterxml/jackson/databind/JavaType;     at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.getJavaType(AbstractJackson2HttpMessageConverter.java:314)     at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.canRead(AbstractJackson2HttpMessageConverter.java:146)     at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.canRead(AbstractJackson2HttpMessageConverter.java:141)     at org.springframework.web.client.RestTemplate$AcceptHeaderRequestCallback.doWithRequest(RestTemplate.java:706)     at org.springframework.web.client.RestTemplate$HttpEntityRequestCallback.doWithRequest(RestTemplate.java:770)     at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:594)     at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:557)     at org.springframework.web.client.RestTemplate.postForObject(RestTemplate.java:357)     at org.springframework.social.oauth2.OAuth2Template.postForAccessGrant(OAuth2Template.java:242)     at org.springframework.social.oauth2.OAuth2Template.exchangeForAccess(OAuth2Template.java:144)     at org.springframework.social.connect.web.ConnectSupport.completeConnection(ConnectSupport.java:160)     at org.springframework.social.connect.web.ProviderSignInController.oauth2Callback(ProviderSignInController.java:228)     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)     at java.lang.reflect.Method.invoke(Method.java:44)     at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:222)     at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137)     at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110)     at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:814)     at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:737)     at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)     at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959)     at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893)     at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)     at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861)     at javax.servlet.http.HttpServlet.service(HttpServlet.java:617) 
like image 620
Marek Raki Avatar asked Jan 11 '16 12:01

Marek Raki


2 Answers

Support for Jackson 2.7 will be added in Spring 4.3. See https://jira.spring.io/browse/SPR-13483.

For now you aren't able to use it without providing your own integration classes.

like image 188
M. Deinum Avatar answered Sep 20 '22 21:09

M. Deinum


The best compatible versions

1)Spring 4.2.4 works with fasterxml Jackson 2.7.2 or 2.8.4

2)Spring 4.3.5 works with fasterxml Jackson 2.7.0

like image 36
Jagadish Avatar answered Sep 20 '22 21:09

Jagadish