我正在浏览Scalatra 2.4的Scalatra "Handling JSON" tutorial,并且我得到了一个" NoSuchMethodError":
Exception in thread "main" java.lang.NoSuchMethodError: org.scalatra.json.JacksonJsonSupport$class.initialize(Lorg/scalatra/json/JacksonJsonSupport;Ljava/lang/Object;)V
at com.tutorial.FlowersController.initialize(FlowersController.scala:8)
at com.tutorial.FlowersController.initialize(FlowersController.scala:8)
at org.scalatra.ScalatraServlet$class.init(ScalatraServlet.scala:123)
at com.tutorial.FlowersController.init(FlowersController.scala:8)
at org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:595)
at org.eclipse.jetty.servlet.ServletHolder.initialize(ServletHolder.java:385)
at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:862)
at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:300)
at org.eclipse.jetty.webapp.WebAppContext.startWebapp(WebAppContext.java:1341)
at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1334)
at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:744)
at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:497)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:132)
at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:114)
at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:60)
at org.eclipse.jetty.server.handler.ContextHandlerCollection.doStart(ContextHandlerCollection.java:154)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:132)
at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:114)
at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:60)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:132)
at org.eclipse.jetty.server.Server.start(Server.java:357)
at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:114)
at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:60)
at org.eclipse.jetty.server.Server.doStart(Server.java:324)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
at org.eclipse.jetty.runner.Runner.run(Runner.java:509)
at org.eclipse.jetty.runner.Runner.main(Runner.java:557)
我在JacksonJsonSupport"中添加了"以及"受保护的隐式lazy val jsonFormats:Formats = DefaultFormats"在控制器签名之后。我在顶部有两个导入,导入org.json4s。{DefaultFormats,Formats}并导入org.scalatra.json ._
为了完整起见,我的ScalatraBootstrap没有包装声明,如下所示:
import com.tutorial._
import org.scalatra._
import javax.servlet.ServletContext
class ScalatraBootstrap extends LifeCycle {
override def init(context: ServletContext) {
context.mount(new FlowersController, "/*")
}
}
我添加了" org.scalatra" %%" scalatra-json" %ScalatraVersion和" org.json4s" %%" json4s-jackson" %" 3.3.0",到build.scala并重新启动sbt。我错过了什么?
答案 0 :(得分:0)
我使用了#34; sbt clean"。该教程建议只需重新启动sbt即可下载新的jar,并再次通过它,它工作正常,但我最初的尝试显然不太正确。我能想到的唯一区别是,我在Docker容器中运行初始尝试,也许某些东西并不完美。