我的项目的 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 参数化 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
基本上,两个接口(interface) Length 都扩展了接口(interface) Quantity,如下所示:
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
但是其中一个扩展了 Quantity,而另一个扩展了 Quantity。不知何故,它们彼此不兼容,编译器使用了错误的编译器并给了我这个错误。
有办法以某种方式管理这种情况吗?
最佳答案
GeoTools upgrade FAQ涵盖了 20.0 版本之后使用 Units 所需的更改。
您需要以下依赖项:
<dependency>
<groupId>systems.uom</groupId>
<artifactId>systems-common-java8</artifactId>
<version>0.7.2</version>
</dependency>
并进行这些更改:
Package names have changed, resulting in some common search and replaces when upgrading:
Search javax.measure.unit.Unit replace javax.measure.Unit
Search ConversionException replace IncommensurableException
This is a checked exception, in areas of the GeoTools library where this was found we now return an IllegalArgument exception.
Search converter == UnitConverter.IDENTITY replace converter.isIdentity()
Search javax.measure.unit.NonSI replace import si.uom.NonSI
Search javax.measure.unit.SI replace import si.uom.SI
Search SI.METER replace SI.METRE
Search javax.measure.converter.UnitConverter replace javax.measure.UnitConverter
Search javax.measure.unit.UnitFormat replace import javax.measure.format.UnitFormat
Search Unit.ONE replace AbstractUnit.ONE
Search Dimensionless.UNIT replace AbstractUnit.ONE
Search Unit.valueOf(unitString) replace Units.parseUnit(unitString)
关于java - 不同依赖项上的类冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60264592/