2016-12-15 24 views
5

मैं अक्का ढांचे में नया हूं और अब इस ढांचे के साथ सरल webservice सेट करने का प्रयास करें।अक्का http संकलन त्रुटि

import akka.actor.ActorSystem 
import akka.http.scaladsl.Http 
import akka.http.scaladsl.server.Directives._ 
import akka.stream.ActorMaterializer 

import scala.io.StdIn 

object MainRunner extends App { 

    implicit val system = ActorSystem("mySystem") 
    implicit val materializer = ActorMaterializer 
    implicit val ec = system.dispatcher 

    val route = 
    path("hello") { 
     get { 
     complete("Congratulation , this is your response") 
     } 
    } 

    val bindingFuture = Http().bindAndHandle(route, "localhost", 8080) 

    println(s"Server online at http://localhost:8080/\nPress RETURN to stop...") 
    StdIn.readLine() // let it run until user presses return 
    bindingFuture 
    .flatMap(_.unbind()) // trigger unbinding from the port 
    .onComplete(_ => system.terminate()) // and shutdown when done 
} 

संकलन पर यह त्रुटि प्राप्त:

Error:(34, 44) type mismatch; 
found : akka.http.scaladsl.server.Route 
    (which expands to) akka.http.scaladsl.server.RequestContext => scala.concurrent.Future[akka.http.scaladsl.server.RouteResult] 
required: akka.stream.scaladsl.Flow[akka.http.scaladsl.model.HttpRequest,akka.http.scaladsl.model.HttpResponse,Any] 
    val bindingFuture = Http().bindAndHandle(route, "localhost", 8080) 

कि कैसे ठीक कर सकता
एक सरल अक्का-http आवेदन लिखना?

उत्तर

13

यह सिर्फ एक साधारण ग़लती जब instantiating है अपने ActorMaterializer:

implicit val materializer = ActorMaterializer 

दायरे में एक वैध मटीरियलाइज़र, Route और Flow[HttpRequest, HttpResponse, _] के बीच निहित रूपांतरण के साथ द्वारा

implicit val materializer = ActorMaterializer() 

प्रतिस्थापित किया जाना चाहिए चाहिए अपेक्षित के रूप में होता है, और संकलक खुश होना चाहिए।

+1

यह एक बमर है। हमने इंटेलिज के साथ इस तरह की समस्याओं के खिलाफ चेतावनी देने के लिए एक मुद्दा भी दायर किया: https://youtrack.jetbrains.com/issue/SCL-12026 – jrudolph

संबंधित मुद्दे