Классовый конфликт на разных зависимостях - PullRequest
0 голосов
/ 17 февраля 2020

У меня один и тот же класс на 2 зависимости от моего проекта. Библиотеки unit-api-1.0 (которые зависят от org.geotools) и jscience-4.3.1 обе имеют класс javax.measure.quantity.Length.

 [INFO] +- org.geotools:gt-shapefile:jar:22.3:compile
 [INFO] |  +- org.geotools:gt-main:jar:22.3:compile
 [INFO] |  |  +- org.geotools:gt-referencing:jar:22.3:compile
 [INFO] |  |  |  +- org.ejml:ejml-ddense:jar:0.34:compile
 [INFO] |  |  |  |  \- org.ejml:ejml-core:jar:0.34:compile
 [INFO] |  |  |  +- commons-pool:commons-pool:jar:1.5.4:compile
 [INFO] |  |  |  +- org.geotools:gt-metadata:jar:22.3:compile
 [INFO] |  |  |  |  \- org.geotools:gt-opengis:jar:22.3:compile
 [INFO] |  |  |  |     \- systems.uom:systems-common-java8:jar:0.7.2:compile
 [INFO] |  |  |  |        +- tec.uom:uom-se:jar:1.0.8:compile
 [INFO] |  |  |  |        |  +- javax.measure:unit-api:jar:1.0:compile


 [INFO] \- org.jscience:jscience:jar:4.3.1:compile
 [INFO]    \- org.javolution:javolution:jar:5.2.3:compile

Когда я пытаюсь использовать Length для параметризации Измерьте , я получаю ошибку:

[ERROR]   error: type argument Length is not within bounds of type-variable Q
[ERROR]   where Q is a type-variable:
[ERROR]     Q extends Quantity declared in class Measure

В основном оба интерфейса Длина расширяют интерфейс Количество, как показано здесь:

https://www.javadoc.io/static/javax.measure/unit-api/1.0/javax/measure/quantity/Length.html http://jscience.org/api/javax/measure/quantity/Length.html

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

Есть ли способ как-то справиться с этой ситуацией?

1 Ответ

1 голос
/ 18 февраля 2020

FAQ по обновлению GeoTools охватывает изменения, необходимые для использования модулей после версии 20.0.

Вам нужна следующая зависимость:

<dependency>
   <groupId>systems.uom</groupId>
   <artifactId>systems-common-java8</artifactId>
   <version>0.7.2</version>
</dependency>

и для внесения этих изменений :

Имена пакетов изменились, что привело к некоторому общему поиску и замене при обновлении:

  • Поиск javax.measure.unit.Unit заменяет javax.measure. Unit

  • Search ConversionException заменяет IncommensurableException

Это проверенное исключение, в тех областях библиотеки GeoTools, где это было найдено, мы теперь возвращаем IllegalArgument исключение.

  • Поиск конвертера == UnitConverter.IDENTITY заменяет converter.isIdentity ()

  • Поиск javax.measure.unit.NonSI заменяет импорт si .uom.NonSI

  • Поиск javax.measure.unit.SI заменяет импорт si.uom.SI

  • Поиск SI.METER заменяет SI. METER

  • Поиск javax.measure.converter.UnitC onverter заменяет javax.measure.UnitConverter

  • Поиск javax.measure.unit.UnitFormat заменяет импорт javax.measure.format.UnitFormat

  • Поиск .ONE заменяет AbstractUnit.ONE

  • Поиск безразмерных.UNIT заменяет AbstractUnit.ONE

  • Поиск Unit.valueOf (unitString) заменяет Units.parseUnit ( unitString)

...