Finch Hello World错误:Http不是com.twitter.finagle的成员

时间:2017-08-15 12:06:39

标签: scala finagle twitter-finagle

我尝试使用scala finch库来构建API。

我有以下简单的代码:

package example

import io.finch._
import com.twitter.finagle.Http

object HelloWorld extends App {

  val api: Endpoint[String] = get("hello") { Ok("Hello, World!") }

  Http.serve(":8080", api.toService)
}

一个看起来像这样的build.sbt文件:

name := "hello-finch"

version := "1.0"

scalaVersion := "2.10.6"

mainClass in (Compile, run) := Some("example.HelloWorld")

libraryDependencies ++= Seq(
  "com.github.finagle" %% "finch-core" % "0.10.0"
)

// found here: https://github.com/finagle/finch/issues/604
addCompilerPlugin(
  "org.scalamacros" % "paradise" % "2.1.0" cross CrossVersion.full
)

当我编译并运行代码时,我收到此错误消息:

object Http is not a member of package com.twitter.finagle
[error] import com.twitter.finagle.Http
[error]        ^
[error] /Users/jamesk/Code/hello_finch/hello-finch/src/main/scala/example/Hello.scala:8: wrong number of type arguments for io.finch.Endpoint, should be 2
[error]   val api: Endpoint[String] = get("hello") { Ok("Hello, World!") }
[error]            ^
[error] /Users/jamesk/Code/hello_finch/hello-finch/src/main/scala/example/Hello.scala:8: not found: value get
[error]   val api: Endpoint[String] = get("hello") { Ok("Hello, World!") }
[error]                               ^
[error] /Users/jamesk/Code/hello_finch/hello-finch/src/main/scala/example/Hello.scala:10: not found: value Http
[error]   Http.serve(":8080", api.toService)
[error]   ^
[error] four errors found
[error] (compile:compileIncremental) Compilation failed
[error] Total time: 1 s, completed Aug 15, 2017 12:56:01 PM

此时我的想法已经不多了,它看起来像一个很好的图书馆,但让它变得有效却很痛苦。非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

我已更新您的示例以使用Finch的最新版本:"com.github.finagle" %% "finch-core" % "0.15.1"以及Scala 2.12

build.sbt文件:

name := "hello-finch"

version := "1.0"

scalaVersion := "2.12.2"

mainClass in (Compile, run) := Some("example.HelloWorld")

libraryDependencies ++= Seq(
  "com.github.finagle" %% "finch-core" % "0.15.1"
)

然后,src/main/scala/example/HelloWorld.scala文件:

package example

import io.finch._
import com.twitter.finagle.Http
import com.twitter.util.Await

object HelloWorld extends App {
  val api: Endpoint[String] = get("hello") { Ok("Hello, World!") }
  Await.ready(Http.server.serve(":8080", api.toServiceAs[Text.Plain]))
}

另请注意,强制使用Await.ready() - 您的程序会立即退出。