2013-07-22 28 views
7

我想用Tomcat和Eclipse使用泽西库来制作Web服务。 这是我的服务类:Jersey java.lang.ClassNotFoundException:com.sun.jersey.spi.container.servlet.ServletContainer

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

有人可以帮我吗? 谢谢

+1

将'jersey-server.jar'放入类路径中。 – NINCOMPOOP

+0

我做到了。但它仍然不起作用。 我也试过不同的库的另一个项目。我将它们添加到WEB-INF/lib文件夹中,并使用Eclipse在 Java Build Path-> libraries - > Web app libraries中设置了类路径。 看来我无法在我的项目中添加外部库。 – user2607498

回答

4

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

+0

添加jersey-servlet.jar之后,我得到了:java.lang.NoClassDefFoundError:javax/servlet/ServletContainerInitializer。我正在使用Jersey 1.15 – Siddharth

12

对我来说,问题是服务器在lib文件夹中没有罐子。 确保它可以访问以下项目中的所有依赖项: project - > properties - > development assembly - > add - > java build path entries。

+0

抱歉没有工作 – Siddharth

7

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

.
记住,所有这些罐子添加到YOUT构建路径

+0

添加jersey-servlet.jar后,我得到一个javax/servlet/ServletContainerInitializer noclassdeffounderror ..然后我添加了所有的jar(如上所述)我得到相同的期望 – Siddharth

0

如果您正在使用JERSEY-JAXRS-RI-2.9版本的拉链,使用下面的给定在WEB.XML文件中。

<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class> 
<init-param> 
    <param-name>jersey.config.server.provider.packages</param-name> 
    ...... 
</init-param> 
9

我有同样的问题。我们只需要使用Eclipse的提供构建路径。这将工作。

确保它可以访问所有依赖于:项目 - >属性 - >显影组件 - >添加 - > Java构建路径条目 - >行家依赖

我只是用一个球衣束依赖

“依赖

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

依赖”

如果您正在使用maven,最好的几个简单的步骤,将工作中的应用

+0

我忘记了感谢:项目 - >属性 - >部署程序集 - >添加 - > java构建路径条目 - > maven依赖项(WEB-INF/lib) – user1767316

-1

我们得到,因为构建路径问题,从org.glassfish而不是com.sun.After与最新的依赖性置换了2.0 过时的依赖names.Latest一个的开始的这个错误,您应该添加“服务器运行时”库中构建路径。

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

请按照以下步骤来解决类未发现异常

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

感谢, 萨钦GN

1

我得到了同样的错误 - “抛出java.lang.ClassNotFoundException:com.sun.jersey.spi.container.servlet.ServletContainer”,同时试图执行宁静球衣eclipse中tomcat的web服务。

按照以下几个步骤帮我解决这个问题:

  • 更正行家依赖于依赖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构建路径条目 - >行家依赖

0

我在以前工作正常,在Tomcat 7.0上运行的Eclipse项目收到此错误。最终我通过从Tomcat中移除项目并将其重新添加回来解决了这个问题。

0

以上提供的解决方案是正确的,但即使做出这些更改,我得到这个错误。因此,我所做的是删除了所有Maven下载的Jersey jar并使用新的Maven依赖关系再次更新Project,并解决了我的问题