无法想出这个,但我得到了以下的路线堆栈跟踪:
[ERROR] [09/06/2013 17:08:00.019] [example-akka.actor.default-dispatcher-5] [akka:// example / user / $ a] 处理请求时出错 HttpRequest(GET,/ user / 12345abcd?service = YT,List(Host:localhost:8080, 接受: / ,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 $ $适用1.适用(BasicDirectives.scala:30) 在 spray.routing.directives.BasicDirectives $$ anonfun $ mapRequestContext $ 1 $$ anonfun $ $适用1.适用(BasicDirectives.scala:30) 在 spray.routing.directives.ExecutionDirectives $$ anonfun $ $ handleExceptions 1 $$ anonfun $ $申请2.适用(ExecutionDirectives.scala:34) 在 spray.routing.directives.ExecutionDirectives $$ anonfun $ $ handleExceptions 1 $$ anonfun $ $申请2.适用(ExecutionDirectives.scala:32) 在 spray.routing.HttpServiceBase $ class.runSealedRoute $ 1(HttpService.scala:36) 在 spray.routing.HttpServiceBase $$ anonfun $ runRoute $ 1.applyOrElse(HttpService.scala:46) at akka.actor.ActorCell.receiveMessage(ActorCell.scala:498)at at 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) 在 scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) 在 scala.concurrent.forkjoin.ForkJoinPool $ WorkQueue.runTask(ForkJoinPool.java:1339) 在 scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979) 在 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"
}
}
}
}
}
我正在提出的要求是:
有什么看似明显的问题吗?
答案 0 :(得分:5)
这可能是一个初始化问题。尝试将路由定义设为def或lazy val。
还有一个scalac标志-Xcheckinit
,它会添加一个运行时检查,并在一点点性能上交换更好的错误信息。