java.lang.NoSuchMethodError:javax.ws.rs.ext.MessageBodyWriter.isWriteable

java.lang.NoSuchMethodError:javax.ws.rs.ext.MessageBodyWriter.isWriteable,java,spring,jax-rs,Java,Spring,Jax Rs,我按照这里的指南来发送POST请求。使用下面的代码,我得到了错误java.lang.NoSuchMethodError:javax.ws.rs.ext.MessageBodyWriter.isWriteable,这似乎是我正在使用的库的问题 public Object getResponse(Object responseClass) { Client client = Client.create(); WebResource webResource = client.reso

我按照这里的指南来发送POST请求。使用下面的代码,我得到了错误
java.lang.NoSuchMethodError:javax.ws.rs.ext.MessageBodyWriter.isWriteable
,这似乎是我正在使用的库的问题

public Object getResponse(Object responseClass) {
    Client client = Client.create();

    WebResource webResource = client.resource(getUrl());
    ClientResponse response = webResource
            .type(MediaType.APPLICATION_JSON)
            .entity(responseClass)
            .post(ClientResponse.class);

    if (response.getStatus() != 201)
        return null;

    return response.getEntity(responseClass.getClass());
}
我不确定我是否缺少依赖关系或什么

我的pom.xml包括

  <dependency>
      <groupId>org.codehaus.jackson</groupId>
      <artifactId>jackson-jaxrs</artifactId>
      <version>1.9.12</version>
  </dependency>
  <dependency>
      <groupId>org.apache.cxf</groupId>
      <artifactId>cxf-rt-frontend-jaxrs</artifactId>
      <version>2.1.2</version>
  </dependency>

org.codehaus.jackson
杰克逊·贾克斯
1.9.12
org.apache.cxf
cxf rt前端jaxrs
2.1.2
pom.xml

  <dependencies>
      <dependency>
          <groupId>log4j</groupId>
          <artifactId>log4j</artifactId>
          <version>1.2.17</version>
      </dependency>
      <dependency>
          <groupId>mysql</groupId>
          <artifactId>mysql-connector-java</artifactId>
          <version>5.1.23</version>
      </dependency>
      <dependency>
          <groupId>org.apache.axis</groupId>
          <artifactId>axis</artifactId>
          <version>1.4</version>
      </dependency>
      <dependency>
          <groupId>commons-logging</groupId>
          <artifactId>commons-logging</artifactId>
          <version>1.1.1</version>
      </dependency>
      <dependency>
          <groupId>commons-discovery</groupId>
          <artifactId>commons-discovery</artifactId>
          <version>0.4</version>
      </dependency>
      <dependency>
          <groupId>javax.xml</groupId>
          <artifactId>jaxrpc-api</artifactId>
          <version>1.1</version>
      </dependency>
      <dependency>
          <groupId>wsdl4j</groupId>
          <artifactId>wsdl4j</artifactId>
          <version>1.6.2</version>
      </dependency>
      <dependency>
          <groupId>javax.mail</groupId>
          <artifactId>mail</artifactId>
          <version>1.4.4</version>
      </dependency>
      <dependency>
          <groupId>javax.activation</groupId>
          <artifactId>activation</artifactId>
          <version>1.1.1</version>
      </dependency>
      <dependency>
          <groupId>org.apache.commons</groupId>
          <artifactId>commons-lang3</artifactId>
          <version>3.1</version>
      </dependency>
      <dependency>
          <groupId>org.apache.cxf</groupId>
          <artifactId>cxf-rt-frontend-jaxrs</artifactId>
          <version>2.1.2</version>
      </dependency>
      <dependency>
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-api</artifactId>
          <version>1.7.2</version>
      </dependency>

      <!-- Jersey & Jackson -->
      <dependency>
          <groupId>org.codehaus.jackson</groupId>
          <artifactId>jackson-jaxrs</artifactId>
          <version>1.9.12</version>
      </dependency>
      <dependency>
          <groupId>org.codehaus.jackson</groupId>
          <artifactId>jackson-xc</artifactId>
          <version>1.9.12</version>
      </dependency>
      <dependency>
          <groupId>com.sun.jersey</groupId>
          <artifactId>jersey-server</artifactId>
          <version>1.17</version>
      </dependency>
      <dependency>
          <groupId>com.sun.jersey</groupId>
          <artifactId>jersey-json</artifactId>
          <version>1.17</version>
      </dependency>
      <dependency>
          <groupId>com.sun.jersey</groupId>
          <artifactId>jersey-servlet</artifactId>
          <version>1.17</version>
      </dependency>
      <dependency>
          <groupId>com.sun.jersey</groupId>
          <artifactId>jersey-grizzly2</artifactId>
          <version>1.17</version>
      </dependency>
      <dependency>
          <groupId>com.sun.jersey</groupId>
          <artifactId>jersey-client</artifactId>
          <version>1.17.1</version>
      </dependency>

      <!-- Spring, Hibernate -->
      <dependency>
          <groupId>org.hibernate</groupId>
          <artifactId>hibernate-core</artifactId>
          <version>4.1.9.Final</version>
      </dependency>
      <dependency>
          <groupId>org.hibernate.javax.persistence</groupId>
          <artifactId>hibernate-jpa-2.0-api</artifactId>
          <version>1.0.1.Final</version>
      </dependency>
      <dependency>
          <groupId>org.hibernate</groupId>
          <artifactId>hibernate-entitymanager</artifactId>
          <version>4.1.9.Final</version>
      </dependency>
      <dependency>
          <groupId>org.hibernate</groupId>
          <artifactId>hibernate-annotations</artifactId>
          <version>3.5.6-Final</version>
      </dependency>
      <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-core</artifactId>
          <version>3.2.1.RELEASE</version>
      </dependency>
      <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-context</artifactId>
          <version>3.2.1.RELEASE</version>
      </dependency>
      <dependency>
          <groupId>org.springframework.data</groupId>
          <artifactId>spring-data-jpa</artifactId>
          <version>1.2.0.RELEASE</version>
      </dependency>
  </dependencies>

log4j
log4j
1.2.17
mysql
mysql连接器java
5.1.23
org.apache.axis
轴
1.4
公用记录
公用记录
1.1.1
公地发现
公地发现
0.4
javax.xml
JAXRCPAPI
1.1
wsdl4j
wsdl4j
1.6.2
javax.mail
邮件
1.4.4
javax.activation
激活
1.1.1
org.apache.commons
commons-lang3
3.1
org.apache.cxf
cxf rt前端jaxrs
2.1.2
org.slf4j
slf4j api
1.7.2
org.codehaus.jackson
杰克逊·贾克斯
1.9.12
org.codehaus.jackson
杰克逊xc
1.9.12
泽西岛
泽西服务器
1.17
泽西岛
泽西json
1.17
泽西岛
泽西servlet
1.17
泽西岛
泽西灰熊2
1.17
泽西岛
泽西岛客户
1.17.1
org.hibernate
冬眠核心
4.1.9.最终版本
org.hibernate.javax.persistence
hibernate-jpa-2.0-api
1.0.1.最终版本
org.hibernate
休眠实体管理器
4.1.9.最终版本
org.hibernate
休眠注释
3.5.6-最终版本
org.springframework
弹簧芯
3.2.1.1发布
org.springframework
spring上下文
3.2.1.1发布
org.springframework.data
spring数据jpa
1.2.0.1发布
更新 删除下面的条目修复了它

  <dependency>
      <groupId>org.apache.cxf</groupId>
      <artifactId>cxf-rt-frontend-jaxrs</artifactId>
      <version>2.1.2</version>
  </dependency>

org.apache.cxf
cxf rt前端jaxrs
2.1.2

类路径中似乎有不同的javax.ws.rs.ext.MessageBodyWriter类。一个来自jsr311-api-0.8.jar,另一个来自jersey-core-1.17.jar。因此,请仔细管理依赖关系

顺便说一下,如果您使用诸如(在目录/JAR中查找类)和(反编译JAR)之类的工具,您可以轻松解决此类问题

以下是我的JFind输出:

ClassName = javax/ws/rs/ext/MessageBodyWriter.class
JarName = C:\Users\lhuang\.m2\repository\com\sun\jersey\jersey-core\1.17\jersey-core-1.17.jar
----------------
ClassName = javax/ws/rs/ext/MessageBodyWriter.class
JarName = C:\Users\lhuang\.m2\repository\javax\ws\rs\jsr311-api\0.8\jsr311-api-0.8.jar
----------------

@MinhKieu也许你可以重命名一个人的包以避免冲突。jarjar是一个用于此的工具。