如何超越异常 - “java.lang.ClassNotFoundException:com.fasterxml.jackson.core.Versioned”
我是Java和REST编程的新手。我举了一个例子,但我坚持上面标题中所述的例外。任何帮助/线索非常感谢。 我有杰克逊注释和其他相关的罐子,但我认为我仍然缺少一些罐子 - 但不知道哪些罐子。我项目中的罐子列表现在很大,因此不在此处添加列表。如何超越异常 - “java.lang.ClassNotFoundException:com.fasterxml.jackson.core.Versioned”
我在使用带有eclipse(Luna 4.4.1版本)的Apache Tomcat v8.0服务器。
下面是我的代码看起来像: 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.x Jackson jar文件。正如cricket_007所建议的那样;你可以转换为Maven来无忧无虑。 http://wiki.fasterxml.com/JacksonDownload
我有如下: 杰克逊的注解-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-module-jaxb-annotations-2.1.2.jar 我只是希望我不必切换到Maven。但是,如果这个问题仍然存在,那么我可能也是。在继续之前想试一试。 – Ravi
在执行程序时,您确定您的jar文件存在于类路径中吗?你的错误指出没有找到com.fasterxml.jackson.core.Versioned类,它存在于jackson-core-2.0.5-sources.jar中,所以这个jar在类路径中是缺少的。 – MSC
我认为问题是不同的杰克逊罐是不同的版本。试着制作相同版本的罐子jackson-annotations,jackson-core,jackson-databind。
您可能缺少JAR文件。具体来说,杰克逊核心我建议将你的项目转换成Maven/Gradle项目,这样你就不必自己乱用JAR文件,尽管 –
感谢你的回应。 我有以下: 杰克逊 - 注解-2.1.2.jar \t杰克逊 - 芯2.0.5-sources.jar \t杰克逊 - 数据绑定-2.2.3.jar \t杰克逊 - JAXRS碱基2.2.3的.jar \t杰克逊JAXRS-JSON-提供商2.2.3.jar \t杰克逊模块JAXB的注释-2.1.2.jar – Ravi