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

时间:2013-07-22 16:05:13

标签: java eclipse tomcat jersey

我正在尝试使用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

下载了球衣

有人能帮助我吗? 感谢

10 个答案:

答案 0 :(得分:12)

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

答案 1 :(得分:9)

我遇到了同样的问题。我们只需要使用Eclipse的提供构建路径。那会有用。

确保它可以访问以下所有依赖项:project - &gt;属性 - &gt;开发组件 - &gt;添加 - &gt; java构建路径条目 - &gt; maven依赖

我刚使用了一个球衣束依赖

“依赖

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

依赖性“

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

答案 2 :(得分:7)

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

.
请记住,将所有这些罐子添加到你的构建路径

答案 3 :(得分:6)

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

答案 4 :(得分:4)

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

答案 5 :(得分:1)

我得到了同样的错误 - &#34; java.lang.ClassNotFoundException:com.sun.jersey.spi.container.servlet.ServletContainer&#34;,同时尝试从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项目 - &gt; Maven - &gt;更新项目

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

答案 6 :(得分: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>

答案 7 :(得分:0)

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

答案 8 :(得分:0)

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

答案 9 :(得分:-1)

由于构建路径问题和过时的依赖项名称,我们收到此错误。最新的一个从org.glassfish开始而不是com.sun.A替换为2.0的最新依赖项:应该添加&#34; Server Runtime&#34; Build Path中的库。

&#34; java.lang.ClassNotFoundException:com.sun.jersey.spi.container.servlet.ServletContainer&#34;

请按照以下步骤解决未找到课程的异常。

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

谢谢, Sachin G N