由于:java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/JsonMappingException$Reference。

6

我完全不懂Java。我正在尝试展示JSON数据,因此我决定使用Jackson库。但是我遇到了错误。

我正在使用

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

在这里,我得到了正确的结果。但是,“studentId”: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":.......

但是,当我输入“/students/4”时,URL显示正确。 我不知道到底发生了什么。我看到很多帖子,它们正在更改Jackson核心版本、注释。 但是,在我的情况下,那并没有起作用。

提前感谢您的帮助。


仍然无法正常工作。。 - Nagarjuna Reddy
你现在遇到了什么问题? - gprathour
实际上,它与另一张名为“tnPatientLocLog”的表格存在映射关系。因此,它正在循环JSON数据。 - Nagarjuna Reddy
这意味着您的“NoClassDefFoundError”问题已得到解决。因此,您可以接受此答案并发布一个新问题,如果您需要在其中寻求帮助,请附上您的代码。 - gprathour
3个回答

4

那就是我的问题。谢谢。 - ViniciusPires
这也是我的问题!非常好的发现,因为它完全不直观。 - Giulio Piancastelli

3
欢迎来到Java。在使用Java时,您需要学习的第一件事情之一就是如何设置和使用CLASSPATH。如果出现“类未找到”错误,则意味着其中一个或多个jar文件不在classpath中。Java不会隐式地查找任何位置(甚至不是您的类所在的相同子目录)中的.jar文件。您需要告诉它去哪里查找。如何设置CLASSPATH?这取决于您的平台(Windows,Linux,IIS,Apache,Tomcat,Bluejay,Eclipse等)。掌握这一点,您将避免许多头痛。

谢谢,我正在使用Linux。我已经包含了所有的.jar文件。 我还有一个类Patients,它可以正常运行并获取JSON数据。但是,当涉及到约会类时,它会循环第一个ID = 0。我认为这是由于对象中的依赖变量(tnPatientLocLog)导致的循环。 - Nagarjuna Reddy

3

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

您可以从这里下载并将其包含在您的Class Path中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接