2016-06-19 24 views
1

ich durch die Scalatra "Handling JSON" tutorial für Scalatra 2.4 werde, und ich bin immer ein "NoSuchMethodError":JacksonJsonSupport Eigenschaft bewirkt eine NoSuchMethodError für initialize()

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) 

ich die "mit JacksonJsonSupport" hinzugefügt, zusammen mit die "geschützte implizite Lazy val jsonFormats: Formats = DefaultFormats" direkt nach der Controller-Signatur. . Ich habe die beiden Importe an der Spitze, Import org.json4s {DefaultFormats, Formate} und Import org.scalatra.json._

Und für die Vollständigkeit, meine ScalatraBootstrap hat keine Paketdeklaration, und ist wie folgt:

import com.tutorial._ 
import org.scalatra._ 
import javax.servlet.ServletContext 

class ScalatraBootstrap extends LifeCycle { 
    override def init(context: ServletContext) { 
    context.mount(new FlowersController, "/*") 
    } 
} 

ich fügte hinzu, "org.scalatra" %% "scalatra-json" % ScalatraVersion und "org.json4s" %% "json4s-jackson" % "3.3.0" und neu gestartet sbt build.scala. Was vermisse ich?

Antwort

0

Ich habe es mit einem "sbt sauber" arbeiten. Das Tutorial schlägt vor, sbt einfach neu zu starten, um die neuen Jars herunterzuladen, und es nochmal durchzugehen, es hat gut funktioniert, aber mein erster Versuch war anscheinend nicht ganz richtig. Der einzige Unterschied, den ich mir vorstellen kann, war, dass ich den ersten Versuch in einem Docker-Container ausgeführt habe und vielleicht war damit etwas nicht perfekt.

+0

Hat nicht für mich funktioniert ... das ist ein seltsamer Fehler, der schwer zu finden ist. Es scheint auch kein allgemeines Problem zu sein. –