Разрешение конфликта версий из-за внешней транзитивной зависимости - PullRequest
0 голосов
/ 24 сентября 2018

Я получаю ошибку ниже -

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

<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>

Таким образом, мое основное приложение зависит от версии 1.18 Джерси, а внешняя зависимость зависит от версии 2.0.1 Джерси.Я не могу найти способ решить эту проблему, чтобы он работал гладко.Любая помощь приветствуется!

Ответы [ 2 ]

0 голосов
/ 24 сентября 2018

Джерси версии 1.18 использует java.ws.rs версию 1.1.1 в качестве зависимости компиляции.См .:

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

Поскольку вы говорите об использовании майки 2.25.1, я предлагаю обновить свою помпу до майки из стеклянной рыбы 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

0 голосов
/ 24 сентября 2018

Вам необходимо использовать согласованную версию трикотажа, предпочтительно 2.x.Поэтому обновите все ваши зависимости до 2.x и затем шаг за шагом выясните, какие изменения необходимо внести в свой собственный код, чтобы это работало.

Нет разумного способа использовать разные версии одного и того же артефакта.одновременно.

...