Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java GeoTools Maven问题-导入混乱_Java_Maven_Geotools_Opengis - Fatal编程技术网

Java GeoTools Maven问题-导入混乱

Java GeoTools Maven问题-导入混乱,java,maven,geotools,opengis,Java,Maven,Geotools,Opengis,我正在遵循一个发布的解决方案,它使用Java将平方度转换为平方米。我对maven导入有问题 具体地说,在GeoTools Maven快速启动之后,我仍然发现无法解决org.GeoTools.measure.measure.valueOf()和org.opengis.geometry.coordination.Polygon.getCentroid()的方法错误。奇怪的是,对于前者,我发现它使用了javax.measure.measure,但这两种方法我都没有用 IDE视图: 这是我的档案: p

我正在遵循一个发布的解决方案,它使用Java将平方度转换为平方米。我对maven导入有问题

具体地说,在GeoTools Maven快速启动之后,我仍然发现
无法解决
org.GeoTools.measure.measure.valueOf()和
org.opengis.geometry.coordination.Polygon.getCentroid()的
方法错误。奇怪的是,对于前者,我发现它使用了
javax.measure.measure
,但这两种方法我都没有用

IDE视图:

这是我的档案:

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.myapp.me</groupId>
    <artifactId>my-app</artifactId>
    <packaging>war</packaging>
    <version>1.0.0</version>
    <name>my app code</name>

    <parent>
        <groupId>com.myapp.me</groupId>
        <artifactId>my-app-root</artifactId>
        <version>1.0.0</version>
    </parent>

    <prerequisites>
        <maven>3</maven>
    </prerequisites>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <geotools.version>21.0</geotools.version>
    </properties>

    <organization>
        <name>my-org</name>
        <url>myurl</url>
    </organization>

    <repositories>
        <repository>
            <id>maven2-repository.dev.java.net</id>
            <name>Java.net repository</name>
            <url>http://download.java.net/maven/2</url>
        </repository>
        <repository>
            <id>osgeo</id>
            <name>Open Source Geospatial Foundation Repository</name>
            <url>http://download.osgeo.org/webdav/geotools/</url>
        </repository>
        <repository>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
            <id>boundless</id>
            <name>Boundless Maven Repository</name>
            <url>http://repo.boundlessgeo.com/main</url>
        </repository>
    </repositories>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.geotools</groupId>
            <artifactId>gt-shapefile</artifactId>
            <version>${geotools.version}</version>
        </dependency>
        <dependency>
            <groupId>org.geotools</groupId>
            <artifactId>gt-swing</artifactId>
            <version>${geotools.version}</version>
        </dependency>
    </dependencies>
</project>

4.0.0
com.myapp.me

如果您正在查看用于较旧版本GeoTools的代码,您可以随时查看,以了解使用较新版本的库需要进行哪些更改

您需要此依赖项:

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

系统单位
systems-common-java8
0.7.2
包名称已更改,导致在升级时进行一些常见搜索和替换:

搜索javax.measure.unit.unit替换javax.measure.unit

搜索转换异常替换不可通约异常

这是一个选中的异常,在GeoTools库中发现该异常的区域中,我们现在返回一个IllegalArgument异常

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

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

搜索javax.measure.unit.SI替换导入SI.uom.SI

搜索SI.METER替换SI.METER

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

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

搜索单元.1替换抽象单元.1

搜索无量纲.UNIT替换AbstractUnit.ONE

搜索单位.valueOf(unitString)替换单位.parseUnit(unitString)

以及使用Quanties:

使用单位 如果以前使用了代码中的单位,则 单位转换或简单地保持单位平直。你可能有 代码如下:

Measure<Double, Length> dist = Measure.valueOf(distance, SI.METER);
System.out.println(dist.doubleValue(SI.KILOMETER) + " Km");
System.out.println(dist.doubleValue(NonSI.MILE) + " miles");
Measure dist=Measure.valueOf(距离,SI.METER);
系统输出打印LN(距离双值(SI.千米)+“千米”);
系统输出打印LN(距离双值(非西英里)+“英里”);
您将发现它不再编译。应将其转换为使用 数量等级

import javax.measure.Quantity;
import javax.measure.quantity.Length;
import si.uom.SI;
import systems.uom.common.USCustomary;

import tec.uom.se.quantity.Quantities;
import tec.uom.se.unit.MetricPrefix;

Quantity<Length> dist = Quantities.getQuantity(distance, SI.METRE);
System.out.println(dist.to(MetricPrefix.KILO(SI.METRE)).getValue() + " Km");
System.out.println(dist.to(USCustomary.MILE) + " miles");
import javax.measure.Quantity;
导入javax.measure.quantity.Length;
输入si.uom.si;
导入systems.uom.common.USCustomary;
进口tec.uom.se.quantity.quantity;
导入tec.uom.se.unit.MetricPrefix;
数量距离=数量。获取数量(距离,SI.米);
System.out.println(dist.to(MetricPrefix.KILO(SI.meter)).getValue()+“Km”);
系统输出打印LN(距离到(USCustomary.MILE)+“miles”);

如果您查看的代码是针对较旧版本的GeoTools的,您可以随时查看,以查看使用较新版本的库需要进行哪些更改

您需要此依赖项:

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

系统单位
systems-common-java8
0.7.2
包名称已更改,导致在升级时进行一些常见搜索和替换:

搜索javax.measure.unit.unit替换javax.measure.unit

搜索转换异常替换不可通约异常

这是一个选中的异常,在GeoTools库中发现该异常的区域中,我们现在返回一个IllegalArgument异常

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

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

搜索javax.measure.unit.SI替换导入SI.uom.SI

搜索SI.METER替换SI.METER

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

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

搜索单元.1替换抽象单元.1

搜索无量纲.UNIT替换AbstractUnit.ONE

搜索单位.valueOf(unitString)替换单位.parseUnit(unitString)

以及使用Quanties:

使用单位 如果以前使用了代码中的单位,则 单位转换或简单地保持单位平直。你可能有 代码如下:

Measure<Double, Length> dist = Measure.valueOf(distance, SI.METER);
System.out.println(dist.doubleValue(SI.KILOMETER) + " Km");
System.out.println(dist.doubleValue(NonSI.MILE) + " miles");
Measure dist=Measure.valueOf(距离,SI.METER);
系统输出打印LN(距离双值(SI.千米)+“千米”);
系统输出打印LN(距离双值(非西英里)+“英里”);
您将发现它不再编译。应将其转换为使用 数量等级

import javax.measure.Quantity;
import javax.measure.quantity.Length;
import si.uom.SI;
import systems.uom.common.USCustomary;

import tec.uom.se.quantity.Quantities;
import tec.uom.se.unit.MetricPrefix;

Quantity<Length> dist = Quantities.getQuantity(distance, SI.METRE);
System.out.println(dist.to(MetricPrefix.KILO(SI.METRE)).getValue() + " Km");
System.out.println(dist.to(USCustomary.MILE) + " miles");
import javax.measure.Quantity;
导入javax.measure.quantity.Length;
输入si.uom.si;
导入systems.uom.common.USCustomary;
进口tec.uom.se.quantity.quantity;
导入tec.uom.se.unit.MetricPrefix;
数量距离=数量。获取数量(距离,SI.米);
System.out.println(dist.to(MetricPrefix.KILO(SI.meter)).getValue()+“Km”);
系统输出打印LN(距离到(USCustomary.MILE)+“miles”);

您提到的答案说它依赖于
javax
。您为
javax.measure
链接的导入说明有一个更新的版本。你检查过了吗?请查看我答案的底部以获取更新。由于某种原因,它找不到
javax
Measure依赖关系。@realponsust我可能已经用
Quantity
解决了它。我在文件里漏掉了。我会回来的,谢谢!是的,任何感兴趣的人都可以使用Quantity类。查看geotools升级常见问题解答,了解版本21的类更改。您提到的答案说它依赖于
javax
。您为
javax.measure
链接的导入说明有一个更新的版本。你检查过了吗?请查看我答案的底部以获取更新。由于某种原因,它找不到
javax
Measure依赖项