雖然這是一個古老的問題,我仍然無法找到答案,使這項工作。 如果您發現我的任何聲明不正確,請更正。新澤西州的REST的ResourceConfig實例不包含任何根資源類
我有一個Java臉應用,並使用REST的Web服務。我不認爲臉孔與我的問題有任何關係。 的web.xml文件是:
<servlet>
<servlet-name>NDREST</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.bi.nd.webservice</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>NDREST</servlet-name>
<url-pattern>/nd/*</url-pattern>
</servlet-mapping>
我有相當的web.xml中多了一些的servlet既然是用面應用與特立尼達和多巴哥等
在包com.bi.nd. webservice,我的資源類是:
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBElement;
import javax.xml.bind.Marshaller;
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
@Produces(MediaType.APPLICATION_XML)
@Path("/hello")
public class TransactionResource
{
public TransactionResource()
{
}
@GET
@Produces(MediaType.TEXT_PLAIN)
public String itWorks()
{
return "Get is OK";
}
}
事實上,我的類有一個@GET足以標識自己的資源類。
更別說其他的複雜性,我編譯使用Ant我的源代碼在Eclipse中,我得到這個錯誤在catalina.out的文件:
May 24, 2011 8:48:46 AM com.sun.jersey.api.core.PackagesResourceConfig init
INFO: Scanning for root resource and provider classes in the packages:
com.bi.nd.webservice
May 24, 2011 8:48:46 AM com.sun.jersey.server.impl.application.WebApplicationImpl _initiate
INFO: Initiating Jersey application, version 'Jersey: 1.7 05/20/2011 11:04 AM'
May 24, 2011 8:48:46 AM com.sun.jersey.server.impl.application.RootResourceUriRules <init>
SEVERE: The ResourceConfig instance does not contain any root resource classes.
一些建議,複製asm.jar,JSR-api.jar文件,jersey-server.jar和jersey-core.jar到應用程序WEB-INF/lib中。我做到了,但仍然無法工作。 我發現這個建議有點奇怪,因爲WEB-INF/lib是Eclipse將從構建路徑安裝所有依賴庫的地方。這不是我們手動放置庫的地方。
一些人解釋說,這個錯誤與Java插件和澤西編寫的方式有關。但那是幾年前。
有人可以向我解釋爲什麼我一直存在這個問題嗎?
跟進: 儘管從REST網站,定義爲根資源類的資源類是POJO(普通舊Java對象),它們或者用@Path註釋或者至少有一個用@Path註釋的方法或者請求方法指示符如@GET,@PUT,@ POST或@DELETE。資源方法是使用請求方法標識符註釋的資源類的方法。本節介紹如何使用Jersey來註釋Java對象以創建RESTful Web服務。
我不得不@Path(「/你好」)添加到我的課,突然澤西可以找到我的資源類
現在catalina.out的文件看起來像:
May 24, 2011 3:13:02 PM com.sun.jersey.api.core.PackagesResourceConfig init
INFO: Scanning for root resource and provider classes in the packages:
com.bi.nd.webservice
May 24, 2011 3:13:02 PM com.sun.jersey.api.core.ScanningResourceConfig logClasses
INFO: Root resource classes found:
class com.bi.nd.webservice.TransactionResource
May 24, 2011 3:13:02 PM com.sun.jersey.api.core.ScanningResourceConfig init
INFO: No provider classes found.
May 24, 2011 3:13:02 PM com.sun.jersey.server.impl.application.WebApplicationImpl _initiate
INFO: Initiating Jersey application, version 'Jersey: 1.7 05/20/2011 11:04 AM'
但問題遠未結束。我嘗試訪問網址http://localhost:8080/nd/hello
,但我仍然收到404 NOT FOUND。提供者類是不是一個重要的消息?
找到並解決了一個問題。 – user759646 2011-05-24 19:19:23
你能分享你修復的問題嗎?我有同樣的問題!即使我用細齒梳過了所有東西,我仍然收到404 – 2011-06-09 17:12:07