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

Posted

技术标签:

【中文标题】泽西 java.lang.ClassNotFoundException: com.sun.jersey.spi.container.servlet.ServletContainer【英文标题】:Jersey java.lang.ClassNotFoundException: com.sun.jersey.spi.container.servlet.ServletContainer 【发布时间】:2013-07-21 11:10:21 【问题描述】:

我正在尝试使用 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下载了球衣

有人可以帮助我吗? 谢谢

【问题讨论】:

jersey-server.jar放在类路径中。 我做到了。但它仍然不起作用。我还尝试了另一个具有不同库的项目。我将它们添加到 WEB-INF/lib 文件夹中,并在 Java Build Path-> 库 -> Web 应用程序库中使用 eclipse 设置了类路径。看来我无法在我的项目中添加外部库。 【参考方案1】:

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

【讨论】:

【参考方案2】:

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

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

jersey 捆绑包依赖

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

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

【讨论】:

我确实忘记了,谢谢:项目-> 属性-> 部署程序集-> 添加-> java 构建路径条目-> maven 依赖项(WEB-INF/lib)【参考方案3】:

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

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

【讨论】:

添加 jersey-servlet.jar 后,我得到一个 javax/servlet/ServletContainerInitializer noclassdeffounderror.. 然后我添加了所有 jar(如上所述),我得到了同样的期望【参考方案4】:

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

【讨论】:

【参考方案5】:

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

【讨论】:

添加 jersey-servlet.jar 后,我得到了原因:java.lang.NoClassDefFoundError: javax/servlet/ServletContainerInitializer。我正在使用 Jersey 1.15【参考方案6】:

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

【讨论】:

【参考方案7】:

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

【讨论】:

【参考方案8】:

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

【讨论】:

【参考方案9】:

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

【讨论】:

【参考方案10】:

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

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

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

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

谢谢, 萨钦G N

【讨论】:

以上是关于泽西 java.lang.ClassNotFoundException: com.sun.jersey.spi.container.servlet.ServletContainer的主要内容,如果未能解决你的问题,请参考以下文章

新泽西的简介

New Jersey 新泽西 的邮编是多少

泽西图像上传客户端

如何访问由@RolesAllowed 保护的泽西岛资源

泽西响应过滤器

泽西客户端多部分通话