解决由于外部传递依赖导致的版本冲突

时间:2018-09-24 15:12:31

标签: java spring maven jersey jersey-2.0

我遇到错误-

servlet [jersey] in context with path [/GeneralService] threw exception
    java.lang.AbstractMethodError: javax.ws.rs.core.UriBuilder.uri

在添加新的外部依赖项(在其pom.xml文件中具有以下依赖项)后,我得到此错误-

  1. jersey-client-2.25.1,这又取决于-
  2. javax.ws.rs-api-2.0.1

当我从依赖关系层次结构中排除javax.ws.rs-api-2.0.1时,我没有得到上述错误,但是依赖于此工件,此外部依赖关系代码不起作用。

我的主应用程序在pom.xml中具有与jersey相关的依赖项

<dependency>
   <groupId>com.sun.jersey.contribs</groupId>
   <artifactId>jersey-multipart</artifactId>
   <version>1.18</version>
</dependency>
<dependency>
   <groupId>com.sun.jersey.contribs</groupId>
   <artifactId>jersey-spring</artifactId>
   <version>1.18</version>
   <exclusions>...</exclusions>
</dependency>
<dependency>
   <groupId>com.sun.jersey</groupId>
   <artifactId>jersey-bundle</artifactId>
   <version>1.18</version>
</dependency>

因此,我的主要应用程序依赖于jersey版本1.18,而外部依赖项依赖于jersey版本2.0.1。 我无法找到解决此问题的方法,以使其顺利运行。任何帮助表示赞赏!

2 个答案:

答案 0 :(得分:0)

您需要使用一致的jersey版本,最好是2.x。因此,将您所有的依赖关系更新为2.x,然后逐步找出需要在自己的代码中进行哪些更改才能使之起作用。

没有明智的方法同时使用同一工件的不同版本。

答案 1 :(得分:0)

球衣版本1.18使用java.ws.rs版本1.1.1作为编译依赖项。参见:

  

https://mvnrepository.com/artifact/com.sun.jersey/jersey-bundle/1.18

由于您正在谈论使用球衣2.25.1,因此建议您将pom升级为glassfish球衣2.25:

  

https://mvnrepository.com/artifact/org.glassfish.jersey.core/jersey-client/2.25.1

像这样:

<dependency>
    <groupId>org.glassfish.jersey.core</groupId>
    <artifactId>jersey-client</artifactId>
    <version>2.25.1</version>
</dependency>

<dependency>
    <groupId>org.glassfish.jersey.media</groupId>
    <artifactId>jersey-media-multipart</artifactId>
    <version>2.25.1</version>
</dependency>

然后对java.ws.rs的依赖关系为2.0.1。

对于jersey-spring工件,它不依赖于java.ws.rs