我路线中的NullPointerException
无法想出这个,但我得到了以下的栈路径:
[错误] [09/06/2013 17:08:00.019] [example-akka.actor.default-dispatcher-5] [akka:// example / user / $ a]处理请求HttpRequest时出错(GET, / user / 12345abcd?service = YT,List(主机: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: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 )在spray.routing.HttpServiceBase $$ anonfun $ runRoute $ 1.app lyOrElse(HttpService.scala:46)at akka.actor.ActorCell.receiveMessage(ActorCell.scala:498)akka.actor.ActorCell.invoke(ActorCell.scala:456)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)在scala.concurrent.forcjoin.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"
}
}
}
}
}
而我正在提出的要求是:
卷曲http://server.com/user/12345abcd/link?service=YT
有什么看似明显的问题吗?
2 years ago
这可能是一个初始化问题 . 尝试将路由定义设为def或lazy val .
还有一个scalac标志
-Xcheckinit
,它会添加一个运行时检查,更好的错误消息交易一点性能 .