我正在尝试使用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的成员
我不确定如何创建路由器并使用它。一个简单的例子会有所帮助。
答案 0 :(得分:1)
Sbt抱怨是因为缺少vertx-web-scala
依赖性。请将其添加到您的build.sbt文件中:
libraryDependencies += "io.vertx" %% "vertx-web-scala" % "3.6.3"
您的代码包含更多的编译问题,例如route
变量定义了两次。
我建议从the official Vertx blog或Vertx Giter8 template开始。它将在1分钟内为您提供一个可以正常工作的项目。