来源:https://blog.csdn.net/dx_dengxiang/article/details/51037431
异常信息如下.
-
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)
HttpClient提交
-
DefaultHttpClient httpclient = new DefaultHttpClient();
-
String url = "http://localhost:8080/testPro/limit";
-
HttpPost httpPost = new HttpPost(url);
-
httpPost.setHeader(HttpHeaders.CONTENT_TYPE, "application/json;charset=utf-8" );
-
TestDTO dto = new TestDTO ();
-
dto.setIdNo( "123456789");
-
-
ObjectMapper om = new ObjectMapper();
-
try {
-
String json = om.writeValueAsString(dto);
-
StringEntity jsonEntity = new StringEntity(json, Charset.forName( "utf-8"));
-
jsonEntity.setContentEncoding( "UTF-8");
-
jsonEntity.setContentType( "application/json");
-
httpPost.setEntity(jsonEntity);
-
HttpResponse response = httpclient.execute(httpPost);
-
HttpEntity entity = response.getEntity();
-
System.out.println(entity.toString());
-
} catch (Exception e) {
-
e.printStackTrace();
-
}
Spring Controller
-
"/limit")(
-
public String creditLimit(@RequestBody TestDTO dto){
-
return "";
-
}
spring 用的4.1.6 jackson用的2.7
后来了解到jackson2.7必须使用更高的spring版本, 因此将jackson降为2.6就正常了.