SpringMVC转换Json 出错.java.lang.NoSuchMethodError: com.fasterxml.jackson.databind.type.

来源:https://blog.csdn.net/dx_dengxiang/article/details/51037431
异常信息如下.
 
 
  1. java.lang.NoSuchMethodError: com.fasterxml.jackson.databind.type.TypeFactory.constructType(Ljava/lang/reflect/Type;Ljava/lang/Class;)Lcom/fasterxml/jackson/databind/JavaType
  2. at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.getJavaType(AbstractJackson2HttpMessageConverter.java: 314)
  3. at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.canRead(AbstractJackson2HttpMessageConverter.java: 146)
  4. at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.canRead(AbstractJackson2HttpMessageConverter.java: 141)
  5. at org.springframework.web.client.RestTemplate$AcceptHeaderRequestCallback.doWithRequest(RestTemplate.java: 706)
  6. at org.springframework.web.client.RestTemplate$HttpEntityRequestCallback.doWithRequest(RestTemplate.java: 770)
  7. at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java: 594)
  8. at org.springframework.web.client.RestTemplate.execute(RestTemplate.java: 557)
  9. at org.springframework.web.client.RestTemplate.postForObject(RestTemplate.java: 357)
  10. at org.springframework.social.oauth2.OAuth2Template.postForAccessGrant(OAuth2Template.java: 242)
  11. at org.springframework.social.oauth2.OAuth2Template.exchangeForAccess(OAuth2Template.java: 144)
  12. at org.springframework.social.connect.web.ConnectSupport.completeConnection(ConnectSupport.java: 160)
  13. at org.springframework.social.connect.web.ProviderSignInController.oauth2Callback(ProviderSignInController.java: 228)
  14. at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  15. at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java: 57)
  16. at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java: 43)
  17. at java.lang.reflect.Method.invoke(Method.java: 44)
  18. at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java: 222)
  19. at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java: 137)
  20. at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java: 110)
  21. at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java: 814)
  22. at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java: 737)
  23. at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java: 85)
  24. at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java: 959)
  25. at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java: 893)
  26. at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java: 970)
  27. at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java: 861)
  28. at javax.servlet.http.HttpServlet.service(HttpServlet.java: 617)
HttpClient提交
 
 
  1. DefaultHttpClient httpclient = new DefaultHttpClient();
  2. String url = "http://localhost:8080/testPro/limit";
  3. HttpPost httpPost = new HttpPost(url);
  4. httpPost.setHeader(HttpHeaders.CONTENT_TYPE, "application/json;charset=utf-8" );
  5. TestDTO dto = new TestDTO ();
  6. dto.setIdNo( "123456789");
  7. ObjectMapper om = new ObjectMapper();
  8. try {
  9. String json = om.writeValueAsString(dto);
  10. StringEntity jsonEntity = new StringEntity(json, Charset.forName( "utf-8"));
  11. jsonEntity.setContentEncoding( "UTF-8");
  12. jsonEntity.setContentType( "application/json");
  13. httpPost.setEntity(jsonEntity);
  14. HttpResponse response = httpclient.execute(httpPost);
  15. HttpEntity entity = response.getEntity();
  16. System.out.println(entity.toString());
  17. } catch (Exception e) {
  18. e.printStackTrace();
  19. }

Spring Controller
  1. @RequestMapping( "/limit")
  2. public @ResponseBody String creditLimit(@RequestBody TestDTO dto){
  3. return "";
  4. }
spring 用的4.1.6 jackson用的2.7
后来了解到jackson2.7必须使用更高的spring版本, 因此将jackson降为2.6就正常了.

猜你喜欢

转载自blog.csdn.net/rentian1/article/details/80858493