未解決の依存関係:io.sprayのリソースを取得できません#sbt-revolver; 0.9.1



Unresolved Dependencies



システム環境:
Windows、scala-2.12.10、JDK-1.8_40


D:ワークスペース akka-quickstart-scala> sbt.bat実行後のエラーメッセージは次のとおりです。



[warn] :::::::::::::::::::::::::::::::::::::::::::::: [warn] :: UNRESOLVED DEPENDENCIES :: [warn] :::::::::::::::::::::::::::::::::::::::::::::: [warn] io.spray:sbt-revolver:0.9.1 (scalaVersion=2.12, sbtVersion=1.0) [warn] [warn] Note: Unresolved dependencies path: [warn] io.spray:sbt-revolver:0.9.1 (scalaVersion=2.12, sbtVersion=1.0) (D:workspaceakka-quickstart-scalaprojectplugins.sbt#L7-8) [warn] +- default:akka-quickstart-scala-build:0.1.0-SNAPSHOT (scalaVe rsion=2.12, sbtVersion=1.0) [error] sbt.librarymanagement.ResolveException: unresolved dependency: io.spray#sbt-revolver0.9.1: Resolution failed several times for dependency: io.spray#sbt-revolver0.9.1 {compile=[default(compile)]}:: [error] typesafe-ivy-releases: unable to get resource for io.spray#sbt-revolver0.9.1: res=https://repo.typesafe.com/typesafe/ivy-releases/io.spray/sbt-revolver/scala_2.12/sbt_1.0/0.9.1/ivys/ivy.xml: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target [error] sbt-plugin-releases: unable to get resource for io.spray#sbt-revolver0.9.1: res=https://repo.scala-sbt.org/scalasbt/sbt-plugin-releases/io.spray/sbt-revolver/scala_2.12/sbt_1.0/0.9.1/ivys/ivy.xml: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target ......
  1. プロジェクトのルートディレクトリにあるbuild.sbtファイル(つまり、akka-quickstart-scala build.sbt)に、scalaVersion := '2.12.10'現在のシステム環境にインストールされているscalaのバージョン番号を入力します。

  2. akka-quickstart-scala project plugins.sbtファイルに、不足している依存パッケージをダウンロードできるURLを追加します。たとえば、ここでの参照 リンク 追加Resolver.url('Plugin Releases', url('http://repo.scala-sbt.org/scalasbt/sbt-plugin-releases/'))(Resolver.ivyStylePatterns)問題を解決しました。
    最終的なplugins.sbtファイルの内容は次のとおりです。



    resolvers ++= Seq( 'Typesafe repository' at 'http://repo.typesafe.com/typesafe/releases/', 'Spray repository' at 'http://repo.spray.io/', 'Scalaz Bintray Repo' at 'http://dl.bintray.com/scalaz/releases', Resolver.url('Plugin Releases', url('http://repo.scala-sbt.org/scalasbt/sbt-plugin-releases/'))(Resolver.ivyStylePatterns) ) addSbtPlugin('io.spray' % 'sbt-revolver' % '0.9.1')

    注意:

    1. ブラウザで、追加されたURLが依存関係の有効なパスに実際にダウンロードできるかどうかを確認します。一部のソリューションで指定されたURLが無効になり、使用できなくなりました。
    2. 最初はbuild.sbtファイルにリゾルバーを追加しても機能しませんでした。 参考2 sbtのplugins.sbtのプラグインは、このプラグイン定義でリゾルバーを個別に定義する必要があることがわかります。 build.sbtで定義されたリゾルバーは、プラグインでは機能しません。
    3. 新しいバージョンのscalaは、Java依存パッケージをダウンロードするときにSSL認証を要求するためにhttpsのURLを使用する場合があり、エラーが発生しますPKIX path building failed: SunCertPathBuilderException: unable to find valid certification path to requested target.ソリューションを見る リンク

また、scala-libraryが見つからないという次のエラーが発生した場合は、まずbuild.sbtファイルに設定されているscalaのバージョン番号を確認してくださいscalaVersion := '2.xx.yy'正しいかどうか。

[warn] module not found: org.scala-lang#scala-library2.12 [warn] ==== local: tried [warn] C:UsersJeremy.ivy2localorg.scala-langscala-library2.12ivysivy.xml [warn] ==== public: tried [warn] https://repo1.maven.org/maven2/org/scala-lang/scala-library/2.12/scala-library-2.12.pom ...... [warn] :::::::::::::::::::::::::::::::::::::::::::::: [warn] :: UNRESOLVED DEPENDENCIES :: [warn] :::::::::::::::::::::::::::::::::::::::::::::: [warn] :: org.scala-lang#scala-library2.12: not found [warn] :: org.scala-lang#scala-reflect2.12: not found [warn] :: org.scala-lang#scala-compiler2.12: not found [warn] :::::::::::::::::::::::::::::::::::::::::::::: ..... [error] sbt.librarymanagement.ResolveException: unresolved dependency: org.scala-lang#scala-library2.12: not found [error] unresolved dependency: org.scala-lang#scala-reflect2.12: not found [error] unresolved dependency: org.scala-lang#scala-compiler2.12: not found [error] at sbt.internal.librarymanagement.IvyActions$.resolveAndRetrieve (IvyActions.scala:334) [error] at sbt.internal.librarymanagement.IvyActions$.$anonfun$updateEit her$1(IvyActions.scala:208) [error] at sbt.internal.librarymanagement.IvyActions$$$Lambda$2597/10344 10143.apply(Unknown Source) [error] at sbt.internal.librarymanagement.IvySbt$Module.$anonfun$withMod ule$1(Ivy.scala:243) [error] at sbt.internal.librarymanagement.IvySbt$Module$$Lambda$2598/510 626047.apply(Unknown Source)

上記のエラーは、scalaのバージョン番号が元々build.sbtファイルで設定されていたためですscalaVersion := '2.12' https://repo1.maven.org/maven2/org/scala-lang/scala-library/につながります 2.12 /無効なURLです。
バージョン番号を入力すると、scalaVersion := '2.12.10'、URL:https://repo1.maven.org/maven2/org/scala-lang/scala-library/に変更されます。 2.12.10 /効果があれば、エラー報告の問題は解決します。




参照:

[1] モジュールが見つかりません:io.spray#sbt-revolver0.7.2 sbt0.13.5でintellij14.1.4を使用
[二] sbt + scala + akka
[3] sbt.ResolveException:未解決の依存関係:org.scala-lang#scala-library2.10:見つかりません
[4] PKIXパスの構築に失敗しました:SunCertPathBuilderException:有効な証明書パスが見つかりません