如何通过异常 - " java.lang.ClassNotFoundException:com.fasterxml.jackson.core.Versioned"

时间:2016-10-03 07:19:54

标签: java rest jackson jax-rs

我是Java和REST编程的新手。我做了一个例子,但我坚持上述标题中所述的这个例外。任何帮助/线索非常感谢。 我有杰克逊注释和其他相关的罐子,但我想仍然缺少一些更多的罐子 - 不知道哪些是。我项目中的罐子列表现在很大,因此不在这里添加列表。

使用带有eclipse的Apache Tomcat v8.0服务器(Luna 4.4.1版本)。

以下是我的代码的样子: 1)对象/ POJO类

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)服务类

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>

2 个答案:

答案 0 :(得分:0)

你缺少2.x Jackson jar文件。正如cricket_007所建议的那样;你可以转换为Maven无忧无虑。 http://wiki.fasterxml.com/JacksonDownload

答案 1 :(得分:0)

我认为问题在于不同的杰克逊罐子有不同的版本。尝试制作相同版本的罐子 jackson-annotations,jackson-core,jackson-databind