如何使用Scala创建vertx路由器

时间:2019-02-25 04:02:58

标签: scala vert.x

我正在尝试使用Scala创建vertx路由器。构建文件如下所示:

name := "Myapp"
version := "0.1"
ThisBuild / scalaVersion := "2.12.8"
libraryDependencies += "io.vertx" %% "vertx-lang- scala-stack" % "3.6.3" 
libraryDependencies += "io.vertx" %% "vertx-lang- scala" % "3.6.3"

如下所示创建了顶点:

import io.vertx.lang.scala.ScalaVerticle
import io.vertx.scala.ext.web.Router

class WebService extends ScalaVerticle {

override def start() {
    //start http server
    val server = vertx.createHttpServer()

    //create router

    val router = Router.router(vertx)
    var route = router.route().path("/")

    val route = router.get("/")
    route.handler(( 
context :io.vertx.scala.ext.web.RoutingContext ) 
=> {
        var response = context.response()
        response.putHeader("content-type", 
"text/plain")
        response.end("hello world")
    })

    println("web service started on 8080")
    server.listen(8080)
}

override def stop() {    }

}

sbt编译命令生成如下所示的错误错误:

com/bca/WebService.scala:4:23: object ext is not 
a member of package io.vertx.scala
[error] import io.vertx.scala.ext.web.Router                      
[error]

 com/bca/WebService.scala:15:22: not found: value 
Router
[error]         val router = Router.router(vertx)
[error]                      ^
[error] two errors found
[error] (Compile / compileIncremental) 
Compilation failed

我正在查看路由器类here。路由器在包io.vertx.scala.ext.web中定义。我不确定为什么sbt抱怨对象ext不是io.vetx.scala的成员

我不确定如何创建路由器并使用它。一个简单的例子会有所帮助。

1 个答案:

答案 0 :(得分:1)

Sbt抱怨是因为缺少vertx-web-scala依赖性。请将其添加到您的build.sbt文件中:

libraryDependencies += "io.vertx" %% "vertx-web-scala" % "3.6.3"

您的代码包含更多的编译问题,例如route变量定义了两次。

我建议从the official Vertx blogVertx Giter8 template开始。它将在1分钟内为您提供一个可以正常工作的项目。