我正在尝试基于 scalatra-sbt.g8 的以下内容:

class FooWeb extends ScalatraServlet with ScalateSupport {
  beforeAll { contentType = "text/html" }
  get("/") {
    templateEngine.layout("/WEB-INF/scalate/templates/hello-scalate.jade")
  }
}

但我收到以下异常(即使文件存在) - 有什么线索吗?
Could not load resource: [/WEB-INF/scalate/templates/hello-scalate.jade]; are you sure it's within [null]?

org.fusesource.scalate.util.ResourceNotFoundException: Could not load resource: [/WEB-INF/scalate/templates/hello-scalate.jade]; are you sure it's within [null]?

FWIW,最里面的异常来自 org.mortbay.jetty.handler.ContextHandler.getResource 第 1142 行: _baseResource==null

最佳答案

从 scalatra 邮件列表中得到了答案。问题是我正在启动 Jetty 服务器:

import org.mortbay.jetty.Server
import org.mortbay.jetty.servlet.{Context,ServletHolder}
val server = new Server(8080)
val root = new Context(server, "/", Context.SESSIONS)
root.addServlet(new ServletHolder(new FooWeb()), "/*")
server.start()

我需要在 start() 之前插入它:
root.setResourceBase("src/main/webapp")

关于在 Scalatra 中扩展 ResourceNotFoundException,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6743211/

10-10 03:20