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

2022-09-03 17:18:42

你可能会觉得这是一个重复的问题,但是没有一个同名的问题能解决我的问题。我正在使用泽西岛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>

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

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

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

enter image description here

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

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

有什么想法吗?


答案 1

我想这已经得到了回答,但只是想添加一个额外的提示。

对于 Eclipse 中的 Web 项目,几乎总是建议使用 Maven 管理依赖关系。使用像m2e这样的Maven插件。一旦你向 Maven 项目添加了依赖项,它应该会自动将这些库部署到 WEB-INF/lib。如果没有(无论出于何种原因),您可以显式执行此操作:

  1. 项目资源管理器中右键单击项目
  2. 选择属性
  3. 选择部署程序集
  4. 如果 Maven 依赖项不是其中一个条目,则不会自动添加库,因此我们现在将添加它们
  5. 选择添加
  6. 选择 Java 构建路径条目
  7. 选择 Maven 依赖项
  8. 单击“完成”

这应该会将库添加到 WEB-INF/lib 中,尽管您仍然无法在“项目资源管理器”视图中看到它们。但是你的ClassNotFoundException现在应该消失了。


答案 2

虽然上述所有内容都适用(Eclipse不是最可靠的应用程序),但请确保您已经仔细检查了您的maven依赖项。你应该注意到,对于球衣2.19,我必须添加以下2个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>

推荐