Java RESTWebService中的AbstractMethodError

Java RESTWebService中的AbstractMethodError,java,json,rest,exception,Java,Json,Rest,Exception,我是网络服务新手。我尝试将jax.ws..web服务与jersey和spring一起使用。当我尝试在windows中使用Chrome Post Client或CURL发送请求时,会出现以下堆栈跟踪 SEVERE: Servlet.service() for servlet [jersey-serlvet] in context with path [/rest] threw exception [Servlet execution threw an exception] with root ca

我是网络服务新手。我尝试将
jax.ws..
web服务与
jersey
spring
一起使用。当我尝试在windows中使用
Chrome Post Client
CURL
发送请求时,会出现以下堆栈跟踪

SEVERE: Servlet.service() for servlet [jersey-serlvet] in context with path [/rest] threw exception [Servlet execution threw an exception] with root cause
java.lang.AbstractMethodError
at org.codehaus.jackson.map.AnnotationIntrospector$Pair.findDeserializer(AnnotationIntrospector.java:1335)
at org.codehaus.jackson.map.deser.BasicDeserializerFactory.findDeserializerFromAnnotation(BasicDeserializerFactory.java:675)
at org.codehaus.jackson.map.deser.BeanDeserializerFactory.createBeanDeserializer(BeanDeserializerFactory.java:535)
at org.codehaus.jackson.map.deser.StdDeserializerProvider._createDeserializer(StdDeserializerProvider.java:432)
at org.codehaus.jackson.map.deser.StdDeserializerProvider._createAndCache2(StdDeserializerProvider.java:341)
at org.codehaus.jackson.map.deser.StdDeserializerProvider._createAndCacheValueDeserializer(StdDeserializerProvider.java:321)
at org.codehaus.jackson.map.deser.StdDeserializerProvider.findValueDeserializer(StdDeserializerProvider.java:167)
at org.codehaus.jackson.map.deser.StdDeserializerProvider.findTypedValueDeserializer(StdDeserializerProvider.java:188)
at org.codehaus.jackson.map.ObjectMapper._findRootDeserializer(ObjectMapper.java:2820)
at org.codehaus.jackson.map.ObjectMapper._readValue(ObjectMapper.java:2690)
at org.codehaus.jackson.map.ObjectMapper.readValue(ObjectMapper.java:1308)
at org.codehaus.jackson.jaxrs.JacksonJsonProvider.readFrom(JacksonJsonProvider.java:419)
..............................
下面是我的示例代码:

@Path("/loginPoint")
@Service
public class UserService {

@Resource(name= "commanUserService")
private CommanUserService commanUserService;

@POST
@Path("/login")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response login(LoginRequest request){
    System.out.println("Hello In web Services >>>>>>>>>>>>>>>>>>>>>>>>> ");
    LoginResponse  response = commanUserService.getUserloginInformation(request);
    return Response.status(Status.OK).entity(response).build();
 }
}
LoginRequest.java文件代码:

@XmlRootElement(name="loginRequest")
public class LoginRequest {
private String userName;
private String password;

@XmlElement("userName")
public String getUserName() {
    return userName;
}
public void setUserName(String userName) {
    this.userName = userName;
}

@XmlElement("password")
public String getPassword() {
    return password;
}
public void setPassword(String password) {
    this.password = password;
 }
}

我想问题在于将
JSON
请求参数映射到
LoginRequest
实体,但我不确定

问题在于Jackson版本之间不匹配。

当使用Jackson core asl依赖项和Jackson mapper asl时,请小心选择相同的版本

    <dependency>
        <groupId>org.codehaus.jackson</groupId>
        <artifactId>jackson-core-asl</artifactId>
        <version>${jackson.version}</version>
    </dependency>
    <dependency>
        <groupId>org.codehaus.jackson</groupId>
        <artifactId>jackson-mapper-asl</artifactId>
        <version>${jackson.version}</version>
    </dependency>

org.codehaus.jackson
jackson core asl
${jackson.version}
org.codehaus.jackson
杰克逊地图绘制者
${jackson.version}

我也遇到了同样的问题,自己解决了。问题在于jersy(jersy json,jersy服务器)和jackson(jackson core asl,jackson mapper asl)JAR之间的版本兼容性


因此,请使用兼容版本,如jersy 1.8和jackson 1.8.1 jars。

AbstractMethodError通常表示版本不匹配。你们有多个杰克逊罐吗?你能打开堆栈上最后一个调用的源代码,看看它会调用什么吗?是的,我的项目中有多个不同版本的
Jackson
jar。但是现在我弄不清楚我需要删除哪个依赖项?如果你使用Maven,依赖项:树插件有时会有帮助。本节还将允许您指定一个覆盖所有可传递依赖项的版本。谢谢@Pace您解决了我的主要问题,非常感谢。