繁体   English   中英

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

[英]Jersey java.lang.ClassNotFoundException: com.sun.jersey.spi.container.servlet.ServletContainer

我正在尝试使用 jersey 库使用 Tomcat 和 Eclipse 制作网络服务。 这是我的服务类:

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下载了球衣

有人能帮我吗? 谢谢

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

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

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

球衣包依赖

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

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

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

.
请记住,将所有这些 jars 添加到您的构建路径中

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

com.sun.jersey.spi.container.servlet.ServletContainer类包含在“jersey-servlet.jar”中,因此您应该将它与“jersey-server.jar”一起放到 WEB-INF/lib 中。

我遇到了同样的错误 - “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依赖

如果您使用的是 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>

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

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

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

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

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

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

谢谢,萨钦 GN

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM