2013-07-22 49 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,並解決了我的問題