java.lang.ClassNotFoundException:org.glassfish.jersey.servlet.ServletContainer

Tom*_*Tom 11 java eclipse rest web-services jersey

您可能会觉得这是一个重复的问题,但同一个题目的问题都没有解决我的问题.我使用Jersey 2.0在Eclipse中创建RESTful Web服务,我使用Tomcat 7.0作为我的服务器,我有以下内容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_2_5.xsd" version="2.5">
  <servlet>
    <servlet-name>JAX-RS Servlet</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.shop.domain</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>JAX-RS Servlet</servlet-name>
    <url-pattern>/jaxrs/*</url-pattern>
  </servlet-mapping>
</web-app>
Run Code Online (Sandbox Code Playgroud)

我有一个名为Hello的简单类:

@Path("customers")
public class Hello {
    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String getCustomer() {
        return "hello";
    }
}
Run Code Online (Sandbox Code Playgroud)

我有一个泽西岛图书馆jersey:

在此输入图像描述

每次我运行这个项目,我都会得到错误

java.lang.ClassNotFoundException: org.glassfish.jersey.servlet.ServletContainer
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

小智 19

我想这已经得到了回答,但只是想补充一点.

对于Eclipse中的Web项目,几乎总是建议使用Maven管理依赖项.使用像m2e这样的Maven插件.向Maven项目添加依赖项后,它应自动将这些库部署到WEB-INF/lib.如果没有(无论出于何种原因),您可以明确地这样做:

  1. Project Explorer中右键单击您的项目
  2. 选择属性
  3. 选择部署程序集
  4. 如果Maven Dependencies不是其中一个条目,则不会自动添加库,因此我们现在将添加它们
  5. 选择添加
  6. 选择Java Build Path Entries
  7. 选择Maven依赖项
  8. 单击完成

这应该将库添加到WEB-INF/lib,尽管您仍然没有在Project Explorer视图中看到它们.但是你的ClassNotFoundException现在应该消失了.


Zhe*_*Hao 5

等等,您说您有一个名为 的 Jersey 库jersey,您创建User Library并命名了jersey吗?如果是这样,请尝试将球衣 jar 文件复制到WebContent -> WEB-INF -> lib 中


Pan*_*vas 5

虽然以上所有内容都适用(Eclipse不是最可信的应用程序),但请确保您已仔细检查了maven依赖项.您应该注意,对于jersey 2.19,我必须添加这两个maven依赖项:

    <dependency>
        <groupId>org.glassfish.jersey.containers</groupId>
        <artifactId>jersey-container-servlet</artifactId>
        <version>2.19</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jersey.core</groupId>
        <artifactId>jersey-server</artifactId>
        <version>2.19</version>
    </dependency>
Run Code Online (Sandbox Code Playgroud)