不同依赖关系上的类冲突

亚历山大·鲁曼诺夫斯克(Alexander Rumanovsk):

我对项目的2个依赖项有相同的类。库unit-api-1.0(是org.geotools的依赖项)和jscience-4.3.1都具有class 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参数化Measure时,出现错误:

[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

但是其中一个扩展了“数量”,而另一个扩展了“数量”。不知何故,它们彼此不兼容,并且编译器使用了错误的代码,并给了我这个错误。

有办法解决这种情况吗?

伊恩·特顿(Ian Turton):

GeoTools升级FAQ占地面积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

  • 搜索ConversionException替换IncommensurableException

这是一个已检查的异常,在找到它的GeoTools库区域中,我们现在返回一个IllegalArgument异常。

  • 搜索转换器== UnitConverter.IDENTITY替换converter.isIdentity()

  • 搜索javax.measure.unit.NonSI替换导入si.uom.NonSI

  • 搜索javax.measure.unit.SI替换为import si.uom.SI

  • 搜索SI.METER替换SI.METER

  • 搜索javax.measure.converter.UnitConverter替换javax.measure.UnitConverter

  • 搜索javax.measure.unit.UnitFormat替换导入javax.measure.format.UnitFormat

  • 搜索Unit.ONE替换AbstractUnit.ONE

  • 搜索Dimensionless.UNIT替换AbstractUnit.ONE

  • 搜索Unit.valueOf(unitString)替换Units.parseUnit(unitString)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章