2016-10-03 24 views
0

Ich bin neu in Java und REST-Programmierung. Ich habe ein Beispiel gemacht, stehe aber bei dieser Ausnahme, die oben im Titel erwähnt wurde, fest. Jede Hilfe/Anhaltspunkt sehr geschätzt. Ich habe die Jackson Annotation und andere relevante Gläser, aber ich denke, dass noch einige Gläser fehlen - nicht sicher, welche aber. Die Liste der Gläser in meinem Projekt ist jetzt groß, daher wird die Liste hier nicht hinzugefügt.Wie komme ich an die Ausnahme - "java.lang.ClassNotFoundException: com.fasterxml.jackson.core.Versioned"

Ich benutze Apache Tomcat v8.0 Server mit Eclipse (Luna 4.4.1 Version).

Unten ist, wie mein Code wie folgt aussieht: 1) Objekt/POJO Klasse

package com; 
public class Employee { 

    private int id; 
    private String name; 
    private String country; 
    private String salary; 

    public int getId() { 
     return id; 
    } 
    public void setId(int id) { 
     this.id = id; 
    } 
    public String getName() { 
     return name; 
    } 
    public void setName(String name) { 
     this.name = name; 
    } 
    public String getCountry() { 
     return country; 
    } 
    public void setCountry(String country) { 
     this.country = country; 
    } 
    public String getSalary() { 
     return salary; 
    } 
    public void setSalary(String salary) { 
     this.salary = salary; 
    } 

} 

2) Service-Klasse

package com; 

import javax.ws.rs.Consumes; 
import javax.ws.rs.GET; 
import javax.ws.rs.POST; 
import javax.ws.rs.Path; 
import javax.ws.rs.Produces; 
import javax.ws.rs.core.MediaType; 
import javax.ws.rs.core.Response; 

@Path("/json/emp1") 
public class JSONService { 

    @GET 
    @Path("/get") 
    @Produces(MediaType.APPLICATION_JSON) 
    public Employee getEmployeeInJSON() { 

     Employee emp1 = new Employee(); 
     emp1.setId(999); 
     emp1.setName("JasonEmployee"); 
     emp1.setCountry("JasonCountry"); 
     emp1.setSalary("JasonSalary"); 

     return emp1; 

    } 

    @POST 
    @Path("/post") 
    @Consumes("application/json") 
    public Response createEmployeeInJSON(Employee emp1) { 

     String result = "Employee created : " + emp1; 
     return Response.status(201).entity(result).build(); 

    } 

} 

3) Web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> 

<display-name>Rest1</display-name> 
<welcome-file-list> 
<welcome-file>index.html</welcome-file> 
<welcome-file>index.htm</welcome-file> 
<welcome-file>index.jsp</welcome-file> 
<welcome-file>default.html</welcome-file> 
<welcome-file>default.htm</welcome-file> 
<welcome-file>default.jsp</welcome-file> 
</welcome-file-list> 
<servlet> 
    <servlet-name>Jersey Web Application</servlet-name> 
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class> 
    <init-param> 
     <param-name>jersey.config.server.provider.packages</param-name> 
     <param-value> 
        com, com.fasterxml.jackson.jaxrs.json 
     </param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>Jersey Web Application</servlet-name> 
    <url-pattern>/rest/*</url-pattern> 
</servlet-mapping> 
</web-app> 
+0

Vermutlich fehlen Ihnen JAR-Dateien. Insbesondere Jackson Core. Ich würde empfehlen, Ihr Projekt in ein Maven/Gradle-Projekt umzuwandeln, damit Sie sich nicht selbst mit JAR-Dateien herumärgern müssen, aber –

+0

Danke für die Antwort. Ich habe unten: Jackson-Annotationen-2.1.2.jar \t Jackson-core-2.0.5-sources.jar \t Jackson-databind-2.2.3.jar \t Jackson-jaxrs-base-2.2.3 .jar \t jackson-jaxrs-json-Provider-2.2.3.jar \t jackson-Modul-jaxb-Annotationen-2.1.2.jar – Ravi

Antwort

0

Sie fehlen 2.x Jackson JAR-Datei. Wie von cricket_007 vorgeschlagen; Sie können zu Maven konvertieren, um stressfrei zu sein. http://wiki.fasterxml.com/JacksonDownload

+0

ich unten haben: jackson-Annotationen-2.1.2.jar \t jackson-core-2.0.5-sources.jar \t jackson-databind-2.2.3.jar \t jackson-jaxrs-base-2.2.3.jar \t jackson-jaxrs-json-provider-2.2.3.jar \t jackson-modul-jaxb-annotations-2.1.2.jar Ich habe nur gehofft, ich müsste nicht zu Maven wechseln. Wenn dieses Problem jedoch fortbesteht, könnte ich das auch. Wollte einen Schuss geben, bevor ich weitermachte. – Ravi

+0

Sind Sie sicher, dass Ihre JAR-Dateien im Klassenpfad vorhanden sind, während Sie das Programm ausführen? Ihr Fehler besagt, dass die com.fasterxml.jackson.core.Versioned-Klasse nicht gefunden wird, die in jackson-core-2.0.5-sources.jar vorhanden ist, also fehlt dieses jar definitiv im Klassenpfad. – MSC

0

Ich denke Problem ist, dass die verschiedenen jackson Gläser von verschiedenen Versionen sind. Versuchen Sie, die Gläser jackson-Anmerkungen, jackson-Kern, jackson-databind derselben Version zu machen.

Verwandte Themen