NoClassDefFoundError JsonAutoDetect al analizar el objeto JSON

Estoy desarrollando una aplicación web usando los servicios en la nube de Amazon y necesito hacer uso de los objetos JSON. Cómo está configurado mi proyecto es que tengo un formulario HTML donde el usuario completará su información y la enviará. Una vez enviados, los datos se colocarán en una base de datos en línea y se les enviará un correo electrónico de confirmación. Antes de poder enviar los datos a la base de datos, necesito colocarlos en un objeto JSON. Mi servlet, hecho en Java, se ve así:

public class FormHandling extends HttpServlet { //doGet function public void doGet (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // In this part of the code I take in the user data and build an HTML // page and return it to the user // Create String Mapping for User Data object Map userData = new HashMap(); // Map the names into one struct. In the code below we are creating // values for the nameStruct from the information the user has // submitted on the form. Map nameStruct = new HashMap(); nameStruct.put("fName", request.getParameter("fname")); nameStruct.put("lName", request.getParameter("lname")); nameStruct.put("mInit", request.getParameter("minit")); // Map the three email's together (providing there are 3). // This is the same logic as the names. Map emailStruct = new HashMap(); emailStruct.put("email", request.getParameter("email1")); emailStruct.put("email", request.getParameter("email2")); emailStruct.put("email", request.getParameter("email3")); // Put Name Hash Value Pair inside User Data Object userData.put("name", nameStruct); userData.put("emails", emailStruct); userData.put("age", 22); // Create the Json data from the userData createJson(userData); // Close writer out.close(); } public File createJson(Map userData) throws JsonGenerationException, JsonMappingException, IOException { File user = new File("user.json"); // Create mapper object ObjectMapper mapper = new ObjectMapper(); // Add the userData information to the json file mapper.writeValue(user, userData); return user; } } 

Cuando envío el formulario usando este código, aparece el siguiente mensaje de error:

java.lang.NoClassDefFoundError: com / fasterxml / jackson / annotation / JsonAutoDetect com.fasterxml.jackson.databind.introspect.VisibilityChecker $ Std. (VisibilityChecker.java:169) com.fasterxml.jackson.databind.ObjectMapper. (ObjectMapper.java : 197) edu.tcnj.FormHandling.createJson (FormHandling.java:115) edu.tcnj.FormHandling.doGet (FormHandling.java:104) edu.tcnj.FormHandling.doPost (FormHandling.java:131) javax.servlet.http .HttpServlet.service (HttpServlet.java:641) javax.servlet.http.HttpServlet.service (HttpServlet.java:722)

Ahora sé que ese error significa que no está encontrando la biblioteca de datos de Jackson. Estoy desarrollando en Eclipse y sé que la ruta de comstackción se estropea de vez en cuando, así que también coloqué las bibliotecas en la carpeta WebContent \ WEB-INF \ lib. Esto ha resuelto problemas que tuve antes. Sin embargo, esto no parece resolver mi problema esta vez. Incluso he abierto los archivos jar para verificar físicamente que la biblioteca y la clase necesaria estén allí, y lo son. He intentado buscar por todas partes y buscar diferentes formas de incluir la biblioteca, pero parece que nada funciona.

Para aquellos que vienen aquí en el futuro, la respuesta es:

Si solo ha copiado el jackson databind jackson core y jackson databind , necesita las jackson annotations para usar ObjectMapper .

Por ejemplo, asegúrese de tener algo como esto:

 [16:32:01]:/android-project/libs master]$ ls -lAF total 2112 -rw-r--r--@ 1 jeffamaphone staff 33525 Jun 18 16:06 jackson-annotations-2.0.2.jar -rw-r--r--@ 1 jeffamaphone staff 193693 Jun 7 16:42 jackson-core-2.0.2.jar -rw-r--r--@ 1 jeffamaphone staff 847121 Jun 18 15:22 jackson-databind-2.0.2.jar 

Para ampliar la excelente respuesta de @ jeffamaphone, para usuarios expertos

  com.fasterxml.jackson.core jackson-core 2.7.3   com.fasterxml.jackson.core jackson-databind 2.7.3   com.fasterxml.jackson.core jackson-annotations 2.7.3  

O la siguiente configuración gradle:

 compile 'com.fasterxml.jackson.core:jackson-core:2.2.2' compile 'com.fasterxml.jackson.core:jackson-databind:2.2.2' compile 'com.fasterxml.jackson.core:jackson-annotations:2.2.2' 

Si usa maven y tiene todas las bibliotecas en su lugar, como en mi caso, un simple mvn clean y mvn install solucionaron el problema.

Si está / estaba usando tomcat mientras se desarrollaba en eclipse y obtuvo este error (tal vez porque presionó republish / clean),

Haga clic derecho en el proyecto-> Maven-> Update Project …

resuelto este problema para mí.

Además, sí incluí las dependencias de Johan Sjöberg