簡體   English   中英

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

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

我正在嘗試使用 jersey 庫使用 Tomcat 和 Eclipse 制作網絡服務。 這是我的服務類:

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下載了球衣

有人能幫我嗎? 謝謝

對我來說,問題是服務器的 lib 文件夾中沒有 jar。 確保它可以訪問以下所有依賴項:項目 -> 屬性 -> 開發程序集 -> 添加 -> java 構建路徑條目。

我們需要使用提供到 Eclipse 的構建路徑 那必須解決問題。

確保它可以訪問以下所有依賴項:項目 -> 屬性 -> 開發程序集 -> 添加 -> java 構建路徑條目 -> maven 依賴項

球衣包依賴

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

如果您使用的是 maven,那么最好的幾個簡單步驟將適用於您的應用程序

伙計,我遇到了同樣的問題。 我解決了將 jersey-servlet-1.18.jar 添加到 WEB-INF/lib 的 id。 然后,這個文件夾是這樣的:

.
請記住,將所有這些 jars 添加到您的構建路徑中

您使用的是 Jersey 2.x 嗎? 如果是,則ServletContainer類已移至另一個包。 本文提供了一些關於如何在從 Jersey 1.7 遷移到 2.x 時更改 web.xml 的好信息: https : //java.net/projects/jersey/lists/users/archive/2013-06/message/91

com.sun.jersey.spi.container.servlet.ServletContainer類包含在“jersey-servlet.jar”中,因此您應該將它與“jersey-server.jar”一起放到 WEB-INF/lib 中。

我遇到了同樣的錯誤 - “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依賴

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

我在 Eclipse 項目中遇到此錯誤,該項目以前運行良好,在 Tomcat 7.0 上運行。 最終我通過從 Tomcat 中刪除項目並重新添加它來解決它。

上面提供的解決方案是正確的,但即使進行了這些更改,我還是收到了這個錯誤。 所以我所做的是刪除所有 maven 下載的 Jersey jar 並使用新的 maven 依賴項再次更新項目,這解決了我的問題

我們收到此錯誤是因為構建路徑問題和過時的依賴項名稱。最新的從 org.glassfish 而不是 com.sun 開始。替換為 2.0 的最新依賴項后,您應該在構建路徑中添加“服務器運行時”庫。

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

請按照以下步驟解決找不到類的異常。

右鍵單擊項目--> 構建路徑--> 構建路徑--> 添加庫--> 服務器運行時--> Apache Tomcat v7.0

謝謝,薩欽 GN

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM