在创建Record时,Lift Scala MongoDB中的基本REST服务出现错误500



REST服务对象代码为:

object Account extends RestHelper {
def createUser = {
for {
username <- S.param("username") ?~ "username parameter missing" ~> 400
number <- S.param("number") ?~ "number parameter missing"
} yield {
val u = GeoFence.createRecord.name(username)
u.save
u.asJSON
}
}
serve {
case Req("api" :: "hello" :: Nil, "json", GetRequest) => JString("hi")
case Req("api" :: "accounts" :: "new" :: Nil, "json", GetRequest) => createUser()
}
}

每当我尝试运行REST服务时,这是我在浏览器上看到的例外。

异常指向第27行,即:

valu=GeoFence.createRecord.name(用户名)

u.保存

HTTP错误500

访问/api/accounts/new.json时出现问题。原因:

(class: net/liftweb/record/Record$class, method: toForm signature: (Lnet/liftweb/record/Record;Lscala/Function1;)Lscala/xml/NodeSeq;) Incompatible object argument for function call

原因:

java.lang.VerifyError:(类:net/liftweb/record/record$class,方法:toForm签名:(Lnet/liftweb/record/record;Lscala/Function1;)Lscala/xml/NodeSeq;)函数调用的对象参数不兼容在smartfamily.model.GeoFence。(GeoFence.scala:21)在smartfamily.model.GeoFence$.(GeoFence.scala:19)在smartfamily.model.GeoFence$.(GeoFence.scala)在smartfamily.api.Account$$anonfun$createUser$1$$anonfon$apply$1.apply(Account.scala:27)在smartfamily.api.Account$$anonfun$createUser$1$$anonfon$apply$1.apply(Account.scala:25)网址:net.litweb.common.Full.map(框号:478)在smartfamily.api.Account$$anonfun$createUser$1.apply(Account.scala:25)在smartfamily.api.Account$$anonfun$createUser$1.apply(Account.scala:24)网址:net.liftweb.common.Full.flatMap(Box.scala:480)位于smartfamily.api.Account$.createUser(Account.scala:24)在smartfamily.api.Account$$anonfun$1.apply(Account.scala:35)在smartfamily.api.Account$$anonfun$1.apply(Account.scala:33)位于net.liftweb.http.rest.RestHelper$class.apply(RestHelper.scala:472)在smartfamily.api.Account$.apply(Account.scala:21)在smartfamily.api.Account$.apply(Account.scala:21)位于net.liftweb.util.NamedPF$$anonfun$applyBox$1.apply(NamedPartialFunction.scala:97)位于net.liftweb.util.NamedPF$$anonfun$applyBox$1.apply(NamedPartialFunction.scala:97)网址:net.litweb.common.Full.map(框号:478)位于net.liftweb.util.NamedPF$.applyBox(NamedPartialFunction.scala:97)网址:net.liftweb.http.LiftServlet.doService(LiftServlet.scala:220)在net.liftweb.http.LiftServlet$$anonfun$doIt$1$1.apply$mcZ$sp(LiftServlet.scala:129)网址:net.liftweb.http.LiftServlet$$anonfun$doIt$1$1.apply(LiftServlet.scala:129)网址:net.liftweb.http.LiftServlet$$anonfun$doIt$1$1.apply(LiftServlet.scala:129)位于net.liftweb.util.TimeHelpers$class.callTime(TimeHelpers.scala:344)位于net.liftweb.util.Helpers$.calcTime(Helpers.scala:34)位于net.liftweb.util.TimeHelpers$class.logTime(TimeHelpers.scala:353)位于net.liftweb.util.Helpers$.logTime(Helpers.scala:34)网址:net.liftweb.http.LiftServlet.doIt$1(LiftServlet.scala:128)网址:net.liftweb.http.LiftServlet.service(LiftServlet.scala:137)网址:net.liftweb.HTTPProvider.HTTPProvider$$anonfun$services$2$$anonfon$apply$mcV$sp$1.apply$mcV$sp(HTTPProvider.scala:69)网址:net.liftweb.HTTPProvider.HTTPProvider$$anonfun$services$2$$anonfon$apply$mcV$sp$1.apply(HTTPProvider.scala:68)网址:net.liftweb.HTTPProvider.HTTPProvider$$anonfun$services$2$$anonfon$apply$mcV$sp$1.apply(HTTPProvider.scala:68)位于net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)网址:net.liftweb.http.URLewriter$.doWith(请求标量:1063)网址:net.liftweb.http.propider.HTTPProvider$$anonfun$service$2.apply$mcV$sp(HTTPProvider.scala:67)网址:net.liftweb.http.provider.HTTPProvider$$anonfun$service$2.apply(HTTPProvider.scala:67)网址:net.liftweb.http.provider.HTTPProvider$$anonfun$service$2.apply(HTTPProvider.scala:67)位于net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)网址:net.liftweb.http.provider.HTTPProvider$class.service(HTTPProvider.scala:63)网址:net.liftweb.http.LiftFilter.service(LiftServlet.scala:689)网址:net.liftweb.http.prprovider.servlet.ServletFilterProvider$$anonfun$doFilter$1$$anonfon$apply$mcV$sp$1.apply$mcV$sp(ServletFilterProvider.scala:67)网址:net.liftweb.http.prprovider.servlet.ServletFilterProvider$$anonfun$doFilter$1$$anonfon$apply$mcV$sp$1.apply(ServletFilterProvider.scala:62)网址:net.liftweb.http.prprovider.servlet.ServletFilterProvider$$anonfun$doFilter$1$$anonfon$apply$mcV$sp$1.apply(ServletFilterProvider.scala:62)在net.liftweb.httpCoreRequestVarHandler$$anonfun$apply$12$$anonfon$apply[13$$anonfen$apply+14$$anonfun$apply.15.apply(Vars.scala:513)位于net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)在net.liftweb.http.CoreRequestVarHandler$$anonfun$apply$12$$anonfon$apply[13$$anonfen$apply%14.apply(Vars.scala:512)位于net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)在net.liftweb.http.CoreRequestVarHandler$$anonfun$apply$12$$anonfon$apply%13.apply(Vars.scala:511)位于net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)在net.liftweb.http.CoreRequestVarHandler$$anonfun$apply$12.apply(Vars.scala:510)位于net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)位于net.liftweb.http.CoreRequestVarHandler$class.apply(Vars.scala:509)网址:net.liftweb.http.RequestVarHandler$.apply(Vars.scala:428)网址:net.liftweb.http.proprovider.servlet.ServletFilterProvider$$anonfun$doFilter$1.apply$mcV$sp(ServletFilterProvider.scala:61)网址:net.liftweb.http.provider.servlet.ServletFilterProvider$$anonfun$doFilter$1.apply(ServletFilterProvider.scala:61)网址:net.liftweb.http.provider.servlet.ServletFilterProvider$$anonfun$doFilter$1.apply(ServletFilterProvider.scala:61)在net.liftweb.httpCoreRequestVarHandler$$anonfun$apply$12$$anonfon$apply[13$$anonfen$apply+14$$anonfun$apply.15.apply(Vars.scala:513)位于net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)在net.liftweb.http.CoreRequestVarHandler$$anonfun$apply$12$$anonfon$apply[13$$anonfen$apply%14.apply(Vars.scala:512)位于net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)在net.liftweb.http.CoreRequestVarHandler$$anonfun$apply$12$$anonfon$apply%13.apply(Vars.scala:511)位于net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)在net.liftweb.http.CoreRequestVarHandler$$anonfun$apply$12.apply(Vars.scala:510)位于net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)位于net.liftweb.http.CoreRequestVarHandler$class.apply(Vars.scala:509)在net.liftweb.http.TransientRequestVarHandler$.apply(Vars.scala:432)网址:net.liftweb.http.provider.servlet.ServletFilterProvider$class.doFilter(servlet过滤器提供程序.scala:60)网址:net.liftweb.http.LiftFilter.doFilter(LiftServlet.scala:689)网址:org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)网址:org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388)网址:org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)网址:org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)网址:org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)网址:org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:440)网址:org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230)网址:org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)网址:org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)网址:org.mortbay.jetty.Server.handle(Server.java:326)网址:org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)网址:org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:926)网址:org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:549)网址:org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)网址:org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)网址:org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:410)位于org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedTthreadPool.java:582)

更新1

好吧,这是由优秀的升降机社区在给定的环节解决的。

http://groups.google.com/group/liftweb/browse_thread/thread/e70cc3763734fdd9

异常中的第一行是:

smartfamily.model.GeoFence.<init>(GeoFence.scala:21)

这就是你必须寻找问题的地方。您对net.liftweb.record.record.toForm的调用显然与编译它所依据的签名不匹配。我猜您运行应用程序时使用了错误版本的lift。要么就是你的提升罐文件损坏了。

最新更新