【问题标题】:Jersey java.lang.ClassNotFoundException: com.sun.jersey.spi.container.servlet.ServletContainer泽西 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 设置了类路径。看来我无法在我的项目中添加外部库。

标签: java eclipse tomcat jersey


【解决方案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

              【讨论】:

                猜你喜欢
                • 2018-08-20
                • 2013-11-02
                • 1970-01-01
                • 2014-10-06
                • 1970-01-01
                • 2017-01-26
                • 2011-08-02
                • 2011-11-24
                • 1970-01-01
                相关资源
                最近更新 更多