无法在值akka.http.javadsl.unmarshalling

时间:2016-08-05 06:01:01

标签: scala akka-http

我正在尝试使用Akka Http Client API编写一个简单的Http客户端。为此,我写了以下代码

import akka.actor.ActorSystem
import akka.http.scaladsl.Http
import akka.http.scaladsl.model._
import akka.http.scaladsl.unmarshalling._
import akka.stream.ActorMaterializer
import akka.stream.scaladsl.{Sink, Source}
import scala.concurrent.duration._
import scala.concurrent.{Await}
import akka.http.scaladsl.server.Directives
import akka.http.scaladsl.marshallers.sprayjson.SprayJsonSupport
import spray.json._

final case class Post(postId: Int, id: Int, name: String, email: String, body: String)

trait JsonSupport extends SprayJsonSupport with DefaultJsonProtocol {
   implicit val postFormat = jsonFormat5(Post.apply)
}

class AkkaHttpClient extends App with Directives with JsonSupport {
   implicit val system = ActorSystem("my-Actor")
   implicit val actorMaterializer = ActorMaterializer()
   implicit val executionContext = system.dispatcher
   val httpClient = Http().outgoingConnection(host="http://jsonplaceholder.typicode.com/")
   val flow = Source.single(HttpRequest(uri = Uri("/comments/1")))
      .via(httpClient)
      .mapAsync(1)(r => Unmarshal(r.entity).to[Post])
      .runWith(Sink.head)

   val results = Await.result(flow, 15 seconds)
   println(results)
}

我的build.sbt文件看起来像

name := "Akka-Http-Client"
version := "1.0"
scalaVersion := "2.11.8"
libraryDependencies ++= Seq(
   "com.typesafe.akka" %% "akka-http-experimental" % "2.4.9-RC1",
   "com.typesafe.akka" %% "akka-http-spray-json-experimental" % "2.4.9-RC1"
)

当我尝试编译代码时,我得到了这些错误

Error:scalac: missing or invalid dependency detected while loading class file 'Unmarshaller.class'.
Could not access type Unmarshaller in value akka.http.javadsl.unmarshalling,
because it (or its dependencies) are missing. Check your build definition for
missing or conflicting dependencies. (Re-run with `-Ylog-classpath` to see the problematic classpath.)
A full rebuild may help if 'Unmarshaller.class' was compiled against an incompatible version of akka.http.javadsl.unmarshalling.

1 个答案:

答案 0 :(得分:2)

我在2.4.9-RC1上遇到同样的问题,回到2.4.8可以解决问题。

或者您可以使用此处描述的解决方法:https://github.com/akka/akka/issues/21105