代码之家  ›  专栏  ›  技术社区  ›  stian

如何在spray框架中提供文件(类型不匹配getFromFile)?

  •  0
  • stian  · 技术社区  · 8 年前

    这可能是一个简单的问题,但我对Scala(以及java)还是新手。我正在尝试实现一个喷雾文件服务器。当我返回Hello字符串时,一切都正常,但当我尝试使用getFromFile提供文件时,我会得到:

    Error:(16, 24) type mismatch;
    found   : spray.routing.Route
    (which expands to)  spray.routing.RequestContext => Unit
     required: spray.httpx.marshalling.ToResponseMarshallable
            getFromFile("build.sbt")
                       ^
                            ^  
    

    我应该如何解决这个错误?

    import akka.actor.ActorSystem
    import spray.routing.SimpleRoutingApp
    
    object Main extends SimpleRoutingApp {
      def main(args: Array[String]): Unit = {
        implicit val actorSystem = ActorSystem()
        startServer(interface="localhost", port = 8080) {
            path("File") {
              complete {
                "Hello"
                //getFromFile("build.sbt")
              }
            }
        }
      }
    }   
    
    2 回复  |  直到 8 年前
        1
  •  1
  •   Ajay Padala    8 年前

    getFromFile会自动完成请求,因此请删除完整项,然后尝试如下所示。并确保您的工作目录设置为生成。sbt在当前目录中

    object Main extends SimpleRoutingApp {
      def main(args: Array[String]): Unit = {
        implicit val actorSystem = ActorSystem()
        startServer(interface="localhost", port = 8080) {
            path("File") {
                getFromFile("build.sbt")
            }
        }
      }
    }  
    
        2
  •  1
  •   salc2    8 年前

    “build.sbt”不是一个目录,它是一个文件,您必须使用一个文件夹目标。例如 getFromDirectory("myfiles") 自从 myfiles 存在于 src/main/resources/myfiles . 如果你只想提供一个文件 index.html 使用 getFromFile("index.html") 由于此文件位于“src/main/resources/index.html”

    getFromDirectory docs api

    当做