[英]Jersey error 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.