当前位置: 首页 > 知识库问答 >
问题:

REST服务类NotFoundException(com.sun.jersey.spi.container.servlet.ServletContainer)

屠锦
2023-03-14

我正在使用java和eclipse制作一个简单的rest服务。我用球衣1.19和杰克逊1.7.9。但当我尝试用tomcat运行项目时,我有一个例外。

严重: Servlet[jersey-servlet]在Web应用程序[/员工服务]抛出加载()异常org.apache.catalina.core.ClassNotFoundException:rapper.loadServletContainer在rapper.java:1087WebappClassLorg.apache.catalina.core.类(WebappClassLontext.load)在ontext.java:5262WebappClassLorg.apache.catalina.core.类(WebappClassLontext.start)在ontext.java:5550DefaultInstanceMorg.apache.catalina.util.类(DefaultInstanceMase.start)在ase.java:150DefaultInstanceMorg.apache.catalina.core.ClassMaybePrivileged(DefaultInstanceManager.java:488)在org.apache.catalina.core.DefaultInstanceManager.new实例(DefaultInstanceManager.java:115)在org.apache.catalina.core.Standard ardWrapper.loadServlet(标准rapper.java:1148)在java.lang.标准com.sun.jersey.spi.container.servlet.(标准org.apache.catalina.loader.)在oader.load标准oader.java:1720OnStartup(标准org.apache.catalina.loader.)在oader.load标准oader.java:1571内部(标准org.apache.catalina.core.)在anager.load生命周期anager.java:506(生命周期org.apache.catalina.core.)在anager.loadContainerBase$StartChild. call(ContainerBase. java: 1575)at org. apache. catalina. corer

在这里,我将复制课程和网站。我拥有的xml。

@XmlAccessorType(XmlAccessType.NONE)

@XmlRootElement(name=“employee”)公共类员工{

public String empId;
public String name;
public String email;

@javax.xml.bind.annotation.XmlElement(required = true)
public String getEmpId() {
    return empId;
}

public void setEmpId(String empId) {
    this.empId = empId;
}

@javax.xml.bind.annotation.XmlElement(required = true)
public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

@javax.xml.bind.annotation.XmlElement(required = true)
public String getEmail() {
    return email;
}

public void setEmail(String email) {
    this.email = email;
}

}

@path("/emp")公共类员工服务{

@GET
@Path("/get/{empId}")
public Employee getEmployee(@PathParam("empId") String empId) {
    Employee employee = new Employee();
    employee.setEmpId(empId);
    employee.setName("Nikola");
    employee.setEmpId("nikola@nikola.com");

    return employee;
}

@POST
@Path("/create")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_XML)
public Employee createEmployee(Employee employee) {
    // create logic goes here
    return employee;
}

@PUT
@Path("/update")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Employee updateEmployee(Employee employee) {
    // create logic goes here
    employee.setName(employee.getName() + "updated");
    return employee;
}

@DELETE
@Path("/delete/{empId}")
public javax.ws.rs.core.Response deleteEmployee(@PathParam("empId") int empId) throws URISyntaxException {
    return javax.ws.rs.core.Response.status(200).entity("Employee with " + empId + "is deleted successfully").build();
}

网状物xml

<?xml version="1.0" encoding="UTF-8"?>

http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd“id=“WebApp\u id”版本=“3.0”

<servlet>   
    <servlet-name>jersey-servlet</servlet-name>
    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
    <init-param>
        <param-name>com.sun.jersey.config.property.packages</param-name>
        <param-value>com.rest.employee</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>jersey-servlet</servlet-name>
    <url-pattern>/rest/*</url-pattern>
</servlet-mapping>

共有3个答案

朱硕
2023-03-14

你应该在你的网站上删除这个。xml

 <load-on-startup>1</load-on-startup>
艾弘义
2023-03-14

由于生成路径问题,我们出现了此错误。您应该在生成路径中添加“服务器运行时”库。

“java.lang.ClassNotFoundException:com.sun.jersey.spi.container.servlet.ServletContainer”

请按照以下步骤解决未找到类异常。

右键单击项目-

是的,删除启动标签上的负载。

它应该可以正常工作。

东方飞捷
2023-03-14

我也有同样的问题。我将所有jar放入引用库中。但您只需将所有必需的jar文件复制粘贴到WEB-INF/lib文件夹中。问题已解决。

 类似资料:
  • 我想使用JDBC我在类路径中添加了Mysql驱动程序,如下所示: 但即使这样我也会犯这个错误: java.lang.ClassNotFoundException:com.mysql.jdbc.driver在java.net.urlClassLoader$1上运行(urlClassLoader.java:366)在java.net.urlClassLoader$1上运行(urlClassLoader

  • 是在API级别20中添加的。 我在我的中导入并重写,但出现在api级别从14到21的某些电话中。原因何在? 发生在:根Nexus 5,Android 4.4.2 堆栈跟踪:

  • 我正在尝试在Pentaho 5上执行map reduce。对于Pentaho 5,Pentaho应用程序是为Apache Hadoop 0.20.2预先配置的,它表示此版本无需进一步配置。我使用cygwin在windows上安装了Hadoop 0.20.2,一切正常。我在Pentaho上运行了一个简单的作业,该作业将文件复制到HDFS中,并成功完成,文件系统被复制到HDFS中。但是,当我运行map

  • 我正在尝试将Jetty配置为http和https的代理。我下载了两个不同版本的jetty,但我都有相同的问题。 我目前使用的版本是:jetty-分发-8.1.8. v20121106,运行在CentOs 6.2上。 打开焦油包装后。gz,我修改了开始。ini文件添加etc/jetty代理。xml到配置文件列表: 码头定期启动。我可以通过以下方式访问它: 读取日志文件时,似乎在端口8080、8443

  • 我使用CXF、REST服务和Apache Camel实现了以下API。 http://localhost:9090/api/compute http://localhost:9091/api/listaction null IllegalArgumentException:无效的URI:/API/ListAction/API/ListAction。如果您正在转发/桥接httpendpoint,则在