引起:java.lang.NoClassDefFoundError:com / fasterxml / jackson / databind / JsonMappingException $ Reference

时间:2014-12-08 12:28:16

标签: java jackson

我是Java的新手。我正在尝试显示JSON数据,因为我决定去杰克逊图书馆。但是我得到了错误。

我正在使用

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

这是我的对象,在这里我有一个依赖" 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类:

 @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;
    }

在这里,我得到了正确的结果。但是,&#34; studentId&#34;:2正在循环,如下所示

     {"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":.......

但是,当我输入&#34; / students / 4&#34;时,在URL中。它显示正确。 我不知道究竟发生了什么。我看到很多帖子,他们正在改变杰克逊核心的版本,注释。但是,这不符合我的情况。

提前感谢您的帮助。

3 个答案:

答案 0 :(得分:3)

检查你是否有任何循环依赖,如果你有循环依赖,你可以忽略它@JsonIgnore Check here for cyclic dependency

答案 1 :(得分:2)

欢迎使用java。使用Java时您需要学习的第一件事就是如何设置和使用CLASSPATH。 “未找到类”错误表示您的一个或多个jar文件不在类路径中。对于.jar文件,Java不会隐式查找任何位置(甚至不是您的类所在的子目录)。你必须告诉它在哪里看。你如何设置CLASSPATH?这取决于您的平台(Windows,Linux,IIS,Apache,Tomcat,Bluejay,Eclipse等等)。了解这一点,您将避免许多人头痛。

答案 2 :(得分:2)

您缺少一个jar文件,其中包含所需的类com.fasterxml.jackson.databind.JsonMappingException

您可以download it from here并加入您的课程路径。