Scala 使用akka http从src/main/resources返回一个文件

Scala 使用akka http从src/main/resources返回一个文件,scala,akka,spray,akka-http,Scala,Akka,Spray,Akka Http,我在项目的资源文件夹src/main/resources中有一个abc.txt文件。 我有下面的代码片段,应该是为文件服务的 get { path("hello") { complete { val s = Source.file(new File("src/main/resources/abc.txt"), 1024) s } } 我甚至试过以下方法 get { path("hello") { complete {

我在项目的资源文件夹src/main/resources中有一个abc.txt文件。 我有下面的代码片段,应该是为文件服务的

get {
    path("hello") {
      complete {
        val s = Source.file(new File("src/main/resources/abc.txt"), 1024)
        s
      }
    }
我甚至试过以下方法

get {
path("hello") {
  complete {
    getFromFile("src/main/resources/abc.txt")
  }
}
在这两种情况下,我都会得到一个错误,即

类型为routing.Route的表达式不符合期望的类型toResponseMarshallable

我唯一的要求是,当我收到这个请求时,我应该能够提供一个文件。 我用谷歌搜索解决方案,但找不到任何解决方案。
注意:我是Scala/Akka初学者,

使用
getFromFile
非常接近,但是它已经定义了一个HTTP方法,所以您不需要自己去做。像这样的方法应该会奏效:

val route: Route =
  path("hello") {
    getFromFile("src/main/resources/abc.txt")
  }

你在两个不同的世界里工作。使用
calasspath
更容易获取
资源

    val resourceStream: InputStream = getClass.getResourceAsStream("/"src/main/resources/abc.txt")
    val data: String = scala.io.Source.fromInputStream(resourceStream).getLine.mkString
    data

getFromFile
是一个指令,而
complete
需要一个响应

正确的解决方案应该是:

val route: Route =
  path("hello") {
    getFromResource("abc.txt")
  }