Search code examples
javajsonmavenjacksonobjectmapper

Why does jackson ObjectMapper throws ClassNotFoundException?


I'm writing simple web app and trying to implement Jackson, but stuck with this error:

     java.lang.ClassNotFoundException: com.fasterxml.jackson.databind.ObjectMapper
   right on
     `mapper = new ObjectMapper();`

Error stack:

    java.lang.ClassNotFoundException: com.fasterxml.jackson.databind.ObjectMapper
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1702)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1547)
    at CalculatorServlet.doPost(CalculatorServlet.java:61)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
    ...
    at java.lang.Thread.run(Unknown Source)

Server is tomcat v7, packaging is war, jackson core, annotations and data-bind are v. 2.8.6.


Solution

  • You are missing com.fasterxml.jackson.databind.ObjectMapper dependency in your web application:

    You have following options

    • Within eclipse, right-click on project and obtain a war file (maven > maven > package). The war file should have dependencies included.

    • if you are running the project as dynamic web project on a server within eclipse, then you should open the project properties (right click > properties) and select "Deployment Assembly". There click "add", select "build path entries", and choose "maven dependencies".

    This will include dependencies and resolve your issue.