2015-09-03 4 views
0

Я режу зубы на Akka HTTP, работая над этим example. В целях обучения я преобразовал его в проект Maven. Однако я получаю ошибки компиляции следующим образом, используя Akka v2.3.12 и Akka Stream v1.0. POST DSL не работает с аналогичными ошибками, которые я не публикую для краткости. Как я могу запустить этот пример?Akka HTTP неоднозначное неявное преобразование

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 => 

ответ

0

Оказывается, это связано с глубокой implicit цепи, Spray (и, следовательно, Акка-HTTP) использует так получать импорт право имеет решающее значение. Очень немногие примеры показывают импорт и те, которые делают, используют старые библиотеки.