Spring Boot

时间:2016-09-28 14:51:09

标签: java spring rest spring-boot jersey-client

在Spring Boot中使用以下依赖项创建REST客户端:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jersey</artifactId>
    </dependency>

反过来下载了jersey-client-2.23.1.jar。 我的请求构建器代码如下:

Client client = ClientBuilder.newClient();
WebTarget targetUrl = client.target("Some URL").path(userid)
            .path("Some String");
Builder requestBuilder = targetUrl.request(MediaType.APPLICATION_JSON);
JsonParser parser = new JsonParser();
JsonArray objArray = (JsonArray) parser.parse(requestBuilder.get(String.class));

但是我在上面代码的第3行中得到以下异常:

java.lang.NoSuchMethodError: javax.ws.rs.core.MultivaluedMap.addAll(Ljava/lang/Object;[Ljava/lang/Object;)V
at org.glassfish.jersey.client.ClientRequest.accept(ClientRequest.java:336) ~[jersey-client-2.23.1.jar:na]
at org.glassfish.jersey.client.JerseyWebTarget.request(JerseyWebTarget.java:221) ~[jersey-client-2.23.1.jar:na]
at org.glassfish.jersey.client.JerseyWebTarget.request(JerseyWebTarget.java:59) ~[jersey-client-2.23.1.jar:na]

我看到很少的解决方案是因为版本不匹配。所以,我试图添加一个较低版本的依赖项:

    <dependency>
        <groupId>com.sun.jersey</groupId>
        <artifactId>jersey-client</artifactId>
        <version>1.19.2</version>
    </dependency>

但春季靴子不考虑这个版本的球衣客户端。有什么办法可以解决这个问题吗?

编辑1: 正如我在第一个回答中提到的那样,我使用了mvn依赖:tree并找到了2个不同版本的jersey客户端。一个是编译时间,一个是运行时间:

[INFO] +- org.springframework.boot:spring-boot-starter-jersey:jar:1.4.0.RELEASE:compile
[INFO] |  +- org.glassfish.jersey.core:jersey-server:jar:2.23.1:compile
[INFO] |  |  +- org.glassfish.jersey.core:jersey-common:jar:2.23.1:compile
[INFO] |  |  |  +- org.glassfish.jersey.bundles.repackaged:jersey-guava:jar:2.23.1:compile
[INFO] |  |  |  \- org.glassfish.hk2:osgi-resource-locator:jar:1.0.1:compile
[INFO] |  |  +- org.glassfish.jersey.core:jersey-client:jar:2.23.1:compile

[INFO] +- some.project.specific:jar:1.1.5.RELEASE:compile
[INFO] |  +- some.project.specific:jar:1.4.10:compile
[INFO] |  |  +- com.sun.jersey:jersey-client:jar:1.19.1:runtime

我试图排除版本2.23.1,如下所示。它还包括罐子。

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jersey</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.glassfish.jersey.core</groupId>
                <artifactId>jersey-client-2.23.1</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

1 个答案:

答案 0 :(得分:0)

检查项目的其他依赖项,尝试运行mvn dependency:tree。可能你对jersey 1.XX版本有一些其他的依赖,你应该排除它以保持2.23.1。