Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Caused by: java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/JsonMappingException$Reference

Tags:

java

jackson

I am completely new to Java. I am trying to display JSON data, for that I have decided to go for Jackson library. But I am getting the Error.

I am using

jackson-annotations-2.3.0.jar
jackson-core-2.4.2.jar
jackson-databind-2.4.2.jar

This is my Object and in this I have one dependency "tnStudentLocLog"

public class Student implements java.io.Serializable, WorkItem {

    private int studentId;
    private Date date;
    private Date startTime;
    private Date endtime;
    private int room;
    private Set tnStudentLocLog;

    public Student() {
    }

    public Student(int studentId,Date date, int room, Date startTime, Date endtime) {
        this.studentId = studentId;
        this.date = date;
        this.room = room;
        this.startTime = startTime;
        this.endtime = endtime;
    }
}

UserController class:

 @Controller
@RequestMapping(value="/students")
public class StudentController {


    private static Logger logger = Logger.getLogger( StudentController.class);


    private StudentManagerDelegate studentDelegate;  


    public StudentController() throws Exception
    {
        studentDelegate= new StudentManagerDelegate(ServiceType.LOCAL);
    }
    /********* GET ALL STUDENTS  ************/
    @RequestMapping(method=RequestMethod.GET)
    @ResponseStatus(HttpStatus.OK)
    public @ResponseBody SuccessResponse<List<Student>> getAllStudents() throws Exception {
        Map<String,List<Student>> studentsMap = new HashMap<String,List<Student>>();
        SuccessResponse<List<Student>> resp = new SuccessResponse<List<Student>>();
        resp.list = studentDelegate.load();
        return resp;
    }

Here, I am getting the correct result. But, "studentId":2 is looping itself like below

     {"max":"30","list":[{"studentId":2,"date":1339327730000,"startTime":1339327806000,"endtime":1339329470000,"room":0,"tnStudentLocLog":
[{"id":"studentId":2,"inTime":1339327872000},"sequenceId":2,"outTime":1339327967000,"Student":{"studentId":2,"date":1339327730000,"startTime":1339327806000,"endtime":1339329470000,"tnStudentLocLog":[{"id":{"studentId":2,"room":10,"inTime":1339327872000},"sequenceId":2,"outTime":1339327967000,"Student":{"studentId":2,"date":1339327730000,"startTime":1339327806000,"endtime":1339329470000,"tnStudentLocLog":[{"id":.......

But, In the URL when I enter "/students/4". It is displaying correctly. I don't know what exactly happening. I saw many posts, they are changing versions of Jackson core, annotations. But, that is not working in my case.

Thanks in advance for your help.

like image 201
Nagarjuna Reddy Avatar asked Dec 08 '14 12:12

Nagarjuna Reddy


2 Answers

Welcome to java. One of the first things you'll need to learn when using Java is how to set up and use the CLASSPATH. The "Class Not Found" error means one or more of your jar files are not in the classpath. Java does not implicitly look anywhere (not even the same subdirectory where your classes are) for .jar files. You have to tell it where to look. How do you set up the CLASSPATH? That depends on your platform (Windows, Linux, IIS, Apache, Tomcat, Bluejay, Eclipse, etc...) Learn that well, you will prevent many a headache.

like image 41
Duston Avatar answered Sep 28 '22 17:09

Duston


Check do you have any cyclic dependency, if you have cyclic dependency you can ignore it by @JsonIgnore Check here for cyclic dependency

like image 126
Karthi Krazz Avatar answered Sep 28 '22 17:09

Karthi Krazz