8

我正在尝试使用 jersey 库与 Tomcat 和 Eclipse 一起创建 Web 服务。这是我的服务类:

package com.gontuseries.university;

import javax.ws.rs.core.MediaType;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;


@Path("/university")
public class UniversityRestWs {

    @GET
    @Produces(MediaType.TEXT_HTML)
    public String getHtmlUniversityInfo(){
        return "<html><body>test</body></html>";
    }

    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String getTextUniversityInfo(){
        return "test";
    }
}

这是文件 web.xml

 <servlet>
 <servlet-name>Jersey REST Service</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.gontuseries.university</param-value>
 </init-param>
 </servlet>
 <servlet-mapping>
 <servlet-name>Jersey REST Service</servlet-name>
 <url-pattern>/rest/*</url-pattern>
 </servlet-mapping>

当我测试我的服务时,我得到 java.lang.ClassNotFoundException: com.sun.jersey.spi.container.servlet.ServletContainer 我从https://jersey.java.net/download.html下载了球衣

有人能帮我吗?谢谢

4

10 回答 10

13

对我来说,问题是服务器的 lib 文件夹中没有 jar。确保它可以访问以下所有依赖项:项目 -> 属性 -> 开发程序集 -> 添加 -> java 构建路径条目。

于 2013-10-20T08:30:23.080 回答
13

我们需要使用提供 Eclipse 的构建路径。那必须解决问题。

确保它可以访问以下所有依赖项: 项目 -> 属性 -> 开发程序集 -> 添加 -> java 构建路径条目 -> maven 依赖项

球衣捆绑依赖

<dependency>
   <groupId>com.sun.jersey</groupId>
   <artifactId>jersey-servlet</artifactId>
   <version>1.17</version>
<dependency>

如果您使用的是 maven,最好的几个简单步骤将适用于您的应用程序

于 2015-03-03T06:03:57.427 回答
7

伙计,我有同样的问题。我解决了将 jersey-servlet-1.18.jar 添加到 WEB-INF/lib 的问题。然后,这个文件夹是这样的:

.
请记住,将所有这些 jar 添加到您的 build-path

于 2014-02-15T17:17:20.807 回答
5

您使用的是 Jersey 2.x 吗?如果是这样,则ServletContainer该类已移至另一个包。本文提供了一些关于如何在从 Jersey 1.7 迁移到 2.x 时更改 web.xml 的有用信息: https ://java.net/projects/jersey/lists/users/archive/2013-06/message/91 。

于 2013-09-17T19:03:39.930 回答
4

The com.sun.jersey.spi.container.servlet.ServletContainer class is contained in the "jersey-servlet.jar" so you should put it to WEB-INF/lib along with the "jersey-server.jar".

于 2013-08-08T12:59:33.387 回答
1

我得到了同样的错误——“java.lang.ClassNotFoundException:com.sun.jersey.spi.container.servlet.ServletContainer”,同时试图在 eclipse 中的 tomcat 中执行 restful jersey web 服务。

以下步骤帮助我解决了这个问题:

  • 将 maven 依赖更正为依赖 jar 的正确版本

         <dependency>
         <groupId>com.sun.jersey</groupId>
         <artifactId>jersey-server</artifactId>
         <version>1.19</version>
         </dependency>
         <dependency>
         <groupId>com.sun.jersey</groupId>
         <artifactId>jersey-servlet</artifactId>
         <version>1.19</version>
         </dependency>
    
  • 右键单击eclipse项目-> Maven -> 更新项目

  • 确保在 Eclipse 属性开发程序集中配置正确。右键单击项目-属性->开发程序集->添加-> java构建路径条目-> maven依赖项

于 2016-02-02T18:59:03.453 回答
0

如果您使用的是 JERSEY-jaxrs-ri-2.9 版本的 zip,请在 WEB.XML 文件中使用下面给出的内容。

<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
  <param-name>jersey.config.server.provider.packages</param-name>
   ......
</init-param>
于 2014-06-12T10:39:47.467 回答
0

我在 Eclipse 项目中遇到了这个错误,该项目以前运行良好,在 Tomcat 7.0 上运行。最终我通过从 Tomcat 中删除项目并重新添加它来解决它。

于 2017-10-18T16:14:18.893 回答
0

上面提供的解决方案是正确的,但即使在进行了这些更改之后,我也收到了这个错误。所以我所做的是删除所有 maven 下载的 Jersey jars 并使用新的 maven 依赖项再次更新 Project 并解决了我的问题

于 2017-12-07T09:31:50.020 回答
-1

由于构建路径问题和过时的依赖项名称,我们收到此错误。最新的从 org.glassfish 而不是 com.sun 开始。替换为 2.0 的最新依赖项后,您应该在构建路径中添加“服务器运行时”库。

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

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

右键单击项目 --> 构建路径 --> 构建路径 --> 添加库 --> 服务器运行时 --> Apache Tomcat v7.0

谢谢, 萨钦 GN

于 2015-08-07T22:45:18.297 回答