scala - 我的 route 的 NullPointerException

标签 scala spray

无法弄清楚这一点,但我的路线得到以下堆栈跟踪:

[ERROR] [09/06/2013 17:08:00.019] [example-akka.actor.default-dispatcher-5] [akka://example/user/$a] Error during processing of request HttpRequest(GET,/user/12345abcd?service=YT,List(Host: localhost:8080, Accept: /, User-Agent: curl/7.24.0 (x86_64-apple-darwin12.0) libcurl/7.24.0 OpenSSL/0.9.8x zlib/1.2.5),EmptyEntity,HTTP/1.1) java.lang.NullPointerException at spray.routing.directives.BasicDirectives$$anonfun$mapRequestContext$1$$anonfun$apply$1.apply(BasicDirectives.scala:30) at spray.routing.directives.BasicDirectives$$anonfun$mapRequestContext$1$$anonfun$apply$1.apply(BasicDirectives.scala:30) at spray.routing.directives.ExecutionDirectives$$anonfun$handleExceptions$1$$anonfun$apply$2.apply(ExecutionDirectives.scala:34) at spray.routing.directives.ExecutionDirectives$$anonfun$handleExceptions$1$$anonfun$apply$2.apply(ExecutionDirectives.scala:32) at spray.routing.HttpServiceBase$class.runSealedRoute$1(HttpService.scala:36) at spray.routing.HttpServiceBase$$anonfun$runRoute$1.applyOrElse(HttpService.scala:46) at akka.actor.ActorCell.receiveMessage(ActorCell.scala:498) at akka.actor.ActorCell.invoke(ActorCell.scala:456) at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:237) at akka.dispatch.Mailbox.run(Mailbox.scala:219) at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:386) at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339) at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979) at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)



我的路线是这样的:
class UserServiceActor extends Actor with UserService {
  def actorRefFactory = context
  def receive = runRoute(userServiceRoute)

}

trait UserService extends HttpService {

  val userServiceRoute = linkRoute

  val linkRoute =
    pathPrefix("user" / Segment) {
      userId =>
        path("link") {
          parameters('service ! "YT") {
            complete {
              "Done"
            }
          }
        }
    }
}

我提出的要求是:

curl http://server.com/user/12345abcd/link?service=YT



有什么看起来很明显的问题吗?

最佳答案

应该是初始化问题。尝试将路由定义设为 def 或惰性 val。

还有一个 scalac 标志 -Xcheckinit这将添加一个运行时检查,并以更好的错误消息交易一些性能。

关于scala - 我的 route 的 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18667384/

相关文章:

scala - 喷雾路线得到童星回应

scala - IO(Http) 是导致错误 "could not find implicit value for parameter system: akka.actor.ActorSystem"

scala - Akka Stream 在 Flow 中使用 HttpResponse

tomcat - 使用 Tomcat/Scala 保持状态的最佳方式?

java - 斯卡拉- Cassandra : cluster read fails with error "Can' t use this Cluster instance because it was previously closed"

java - 分发库 Jar 时如何包含 scala 代码的 javadoc?

scala - 这可以做成尾递归吗?

scala - 如何使用 jsonspray 序列化具有特征的案例类

scala - 设置喷雾连接限制

java - Scala 相当于 Java java.lang.Class<T> 对象