2011-04-15 62 views
0

REST服务对象的代码是:错误500在电梯斯卡拉MongoDB的基本REST服务,同时createRecord

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,其是:

val u = GeoFence.createRecord.name(username)

u.save

HTTP ERROR 500

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

java.lang.VerifyError的:(类别:网/ liftweb /记录/记录$类,方法:toForm签名:

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

所致(LNET/liftweb /记录/录音; Lscala/Function1;)Lscala/xml/NodeSeq;)在smartfamily.model.GeoFence处函数调用 的不兼容对象参数(GeoFence.scala:21) at smartfamily.model.GeoFence $。(GeoFence.scala:19) at smartfamily.model.GeoFence $。(GeoFence.scala) at smartfamily.api.Account $$ anonfun $ createUser $ 1 $$ anonfun $ apply $ 1.apply(Account.scala:27) at smartfamily.api.Account $$ anonfun $ C reateUser $ 1 $$ anonfun $ apply $ 1.apply(Account.scala:25) at net.liftweb.common.Full.map(Box.scala:478) at smartfamily.api.Account $$ anonfun $ createUser $ 1.apply (Account.scala:25) at smartfamily.api.Account $$ anonfun $ createUser $ 1.apply(Account.scala:24) at net.liftweb.common.Full.flatMap(Box.scala:480) at smartfamily .api.Account $ .createUser(Account.scala:24) at smartfamily.api.Account $$ anonfun $ 1.apply(Account.scala:35) at smartfamily.api.Account $$ anonfun $ 1.apply(Account。 scala:33) at net.liftweb.http.rest.RestHelper $ class.apply(RestHelper.scala:472) at smartfamily.api.Account $ .apply(Account.scala:21) at smartfamily.api.Account $ .apply(Account.scala:21) at net.liftweb.util.NamedPF $$ anonfun $ applyBox $ 1.apply(NamedPartialFunction.scala:97) at net.liftweb.util.NamedPF $$ anonfun $ applyBox $ 1.apply(NamedPartialFunction.scala:97) at net.liftweb.common.Full.map(Box.scala:478) at net.liftweb.util.NamedPF $ .applyBox(NamedPartialFunction.scala:97) at net.liftweb.http.LiftServlet.doService(LiftServlet.scala :220) at net.liftweb.http.LiftServlet $$ anonfun $ doIt $ 1 $ 1.apply $ mcZ $ sp(LiftServlet.scala:129) at net.liftweb.http.LiftServlet $$ anonfun $ doIt $ 1 $ 1.apply (LiftServlet.scala:129) 在net.liftweb.http.LiftServlet $$ anonfun $ doIt方法$ 1 $ 1.适用(LiftServlet.scala:129) 在net.liftweb.util.TimeHelpers $ class.calcTime(TimeHelpers.scala: 344) at net.liftweb.util.Helper s .calcTime(Helpers.scala:34) at net.liftweb.util.TimeHelpers $ class.logTime(TimeHelpers.scala:353) at 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.http.provider.HTTPProvider $$ anonfun $ service $ 2 $$ anonfun $ apply $ mcV $ sp $ 1.apply $ mcV $ sp(HTTPProvider.scala:69) at net.liftweb.http.provider.HTTPProvider $$ anonfun $ service $ 2 $$ anonfun $ apply $ mcV $ sp $ 1.apply(HTTPProvider.scala:68) at net.liftweb.http.provider.HTTPProvider $$ anonfun $ service $ 2 $$ anonfun $ apply $ mcV $ sp $ 1.apply(HTTPProvider.scala:68) 在net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal。scala:71) at net.liftweb.http.URLRewriter $ .doWith(Req.scala:1063) at net.liftweb.http.provider.HTTPProvider $$ anonfun $ service $ 2.apply $ mcV $ sp(HTTPProvider.scala :67) 在net.liftweb.http.provider.HTTPProvider $$ anonfun $ $服务2.适用(HTTPProvider.scala:67) 在net.liftweb.http.provider.HTTPProvider $$ anonfun $ $服务2.适用(HTTPProvider .scala:67) at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71) at net.liftweb.http.provider.HTTPProvider $ class.service(HTTPProvider.scala:63) at net.liftweb .http.LiftFilter.service(LiftServlet.scala:689) at net.liftweb.http.provider.servlet.ServletFilterProvider $$ anonfun $ doFilter $ 1 $$ anonfun $ apply $ mcV $ sp $ 1.apply $ mcV $ sp(ServletFilterProvider .scala:67) at net.l iftweb.http.provider.servlet.ServletFilterProvider $$ anonfun $ doFilter $ 1 $$ anonfun $ apply $ mcV $ sp $ 1.apply(ServletFilterProvider.scala:62) at net.liftweb.http.provider.servlet.ServletFilterProvider $$ anonfun $ doFilter $ 1 $$ anonfun $ apply $ mcV $ sp $ 1.apply(ServletFilterProvider.scala:62) at net.liftweb.http.CoreRequestVarHandler $$ anonfun $ apply $ 12 $$ anonfun $ apply $ 13 $$ anonfun $ apply $ 14 $ $ anonfun $ apply $ 15.apply(Vars.scala:513) at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71) at net.liftweb.http.CoreRequestVarHandler $$ anonfun $ apply $ 12 $$ anonfun $ apply $ 13 $$ anonfun $ apply $ 14.apply(Vars.scala:512) at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71) at net.liftweb.http.CoreRequestVarHandler $$ anonfun $ apply $ 12 $$ anonfun $ apply $ 13.apply(Vars.scala:511) at net.liftweb。 util.ThreadGlobal.doWith(ThreadGlobal.scala:71) at net.liftweb.http.CoreRequestVarHandler $$ anonfun $ apply $ 12.apply(Vars.scala:510) at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal。 scala:71) at net.liftweb.http.CoreRequestVarHandler $ class.apply(Vars.scala:509) at net.liftweb.http.RequestVarHandler $ .apply(Vars.scala:428) at net.liftweb.http .provider.servlet.ServletFilterProvider $$ anonfun $ doFilter $ 1.apply $ mcV $ sp(ServletFilterProvider.scala:61) at net.liftweb.http.provider.servlet.ServletFilterProvider $$ anonfun $ doFilter $ 1.apply(ServletFilterProvider.scala :61) at net.liftweb.http.provider.servlet.ServletFilterProvider $$ anonfun $ doFilter $ 1.apply(ServletFilterProvider.scala:61) at net.liftweb.http.CoreRequestVarHandler $$ anonfun $ app ly $ 12 $$ anonfun $ apply $ 13 $$ anonfun $ apply $ 14 $$ anonfun $ apply $ 15.apply(Vars.scala:513) at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71) at net .liftweb.http.CoreRequestVarHandler $$ anonfun $ apply $ 12 $$ anonfun $ apply $ 13 $$ anonfun $ apply $ 14.apply(Vars.scala:512) at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71 ) at net.liftweb.http.CoreRequestVarHandler $$ anonfun $ apply $ 12 $$ anonfun $ apply $ 13.apply(Vars.scala:511) at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71) at net.liftweb.http.CoreRequestVarHandler $$ anonfun $ apply $ 12.apply(Vars.scala:510) at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71) at net.liftweb.http.CoreRequestVarHandler $ class.apply(Vars.scala:509) 在net.liftweb.http.TransientRequestVarHandler $。适用(Vars.scala:432) 在net.liftweb.http.provider.servlet.ServletFilterProvider $ class.doFilter(ServletFilterProvider.scala:60) 在net.liftweb.http。 LiftFilter.doFilter(LiftServlet.scala:689) at org.mortbay.jetty.servlet.ServletHandler $ CachedChain.doFilter(ServletHandler.java:1157) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java: 388) at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) at org.mortbay.jetty。 handler.ContextHandler.handle(ContextHandler.java:765) at 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) at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) 在org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:410) 在org.mortbay.thread.QueuedThreadPool $ PoolThread.run(QueuedThreadPool.java:582)

UPDATE 1

这个问题在特定环节中由优秀的升降社区解决。

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

+0

如果在'java.lang.VerifyError ...'之前插入四个空格,则读取异常会更加简单: – thoredge 2011-04-16 22:47:40

回答

0

在你的异常的第一行是:

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

这是你必须去寻找问题。您对net.liftweb.record.Record.toForm的调用显然与您编译的签名不匹配。我猜想你正在用错误版本的电梯运行你的应用程序。无论是那个还是你的升降机jar文件都损坏了。