1

推移的な依存関係を解決する SBT に問題があります。

エラーは次のとおりです。

java.lang.NoSuchMethodError: com.vividsolutions.jts.index.strtree.STRtree.queryBoundary()Ljava/util/List

Geosparkjts2geojson https://github.com/bjornharrtell/jts2geojson/blob/master/pom.xmlはversion の which references jtsを使用しています1.14が、これは除外されており、代わりにカスタム アーティファクトを使用しています。JTSPlus名前空間にまだ存在し、com.vividsolutionsいくつかの追加のメソッド、つまり上記にないメソッドを提供するものは呼び出されます。

最新版はhttps://github.com/geotools/geotools/blob/master/pom.xml#L752-L754geotools 17で使用していますjts1.13

追加の必要な機能を提供する geotoolsから置き換えるcom.vividsolution.jtsorg.datasyslab.jtsplus必要があります。これを実現するにはどうすればよいですか?

Mavenで:

<dependency>
            <groupId>org. geotools </groupId>
            <artifactId> geotools </artifactId>
            <version>YOURVERSION</version>
            <exclusions>
                <exclusion>
            <groupId>com.vividsolutions</groupId>
            <artifactId>jts</artifactId>
                </exclusion>
            </exclusions>
</dependency>

動作するはずですが、SBT の場合は

libraryDependencies ++= Seq(
  "org.geotools" % "gt-main" % geotools,
  "org.geotools" % "gt-arcgrid" % geotools,
  "org.geotools" % "gt-process-raster" % geotools)
  .map(_.excludeAll(
    ExclusionRule(organization = "com.vividsolution", artifact = "jts")
  ))

修正しませんでした。実際、dependencyGraph を使用すると、SBT がまだバージョン 1.13 の通常の jts をプロジェクト全体に適用していることがわかります。

依存関係を修正して元の JTS バージョンを適切に除外するにはどうすればよいですか?

私のbuild.sbtは次のようになります

lazy val geotools = "17.0"

resolvers += "osgeo" at "http://download.osgeo.org/webdav/geotools"
resolvers += "boundless" at "http://repo.boundlessgeo.com/main"
resolvers += "imageio" at "http://maven.geo-solutions.it"
resolvers += Resolver.mavenLocal

libraryDependencies ++= Seq(
  "org.geotools" % "gt-main" % geotools,
  "org.geotools" % "gt-arcgrid" % geotools,
  "org.geotools" % "gt-process-raster" % geotools)
  .map(_.excludeAll(
    ExclusionRule(organization = "com.vividsolution", artifact = "jts")
  ))

libraryDependencies ++= Seq(
  "org.datasyslab" % "geospark" % "0.6.1-snapshot"
)
4

1 に答える 1