1

この例を実行することで、Akka HTTP の経験を積んでいます。学習のために、Maven プロジェクトに変換しました。ただし、Akka v2.3.12 と Akka Stream v1.0 を使用すると、次のようなコンパイル エラーが発生します。POST DSL は、簡潔にするために投稿していない同様のエラーで失敗します。サンプルを実行するにはどうすればよいですか?

pathPrefix("ip") {
(get & path(Segment)) { ip =>
  complete {
    fetchIpInfo(ip).map[ToResponseMarshallable] {
      case Right(ipInfo) => ipInfo
      case Left(errorMessage) => BadRequest -> errorMessage
    }
  }
}

[ERROR]  found   : akka.http.scaladsl.server.Directive[(String,)]
[ERROR]  required: ?{def apply: ?}
[ERROR] Note that implicit conversions are not applicable because they are ambiguous:
[ERROR]  both method addDirectiveApply in object Directive of type [L](directive: akka.http.scaladsl.server.Directive[L])(implicit hac: akka.http.scaladsl.server.util.ApplyConverter[L])hac.In => akka.http.scaladsl.server.Route
[ERROR]  and method fromDirective in object ConjunctionMagnet of type [L, R](other: akka.http.scaladsl.server.Directive[R])(implicit join: akka.http.scaladsl.server.util.TupleOps.Join[L,R])akka.http.scaladsl.server.ConjunctionMagnet[L]{type Out = akka.http.scaladsl.server.Directive[join.Out]}
[ERROR]  are possible conversion functions from akka.http.scaladsl.server.Directive[(String,)] to ?{def apply: ?}
[ERROR]         (get & path(Segment)) { ip =>

error: akka.http.scaladsl.server.Directive[(String,)] does not take parameters
[ERROR]         (get & path(Segment)) { ip =>
4

1 に答える 1

1

implicitこれは、Spray (したがって akka-http) が使用する深いチェーンが原因であることが判明したため、インポートを正しく行うことが重要です。インポートと古いライブラリを使用するインポートを示す例はほとんどありません。

于 2015-09-10T07:40:53.363 に答える