虽然这是一个古老的问题,我仍然无法找到答案,使这项工作。 如果您发现我的任何声明不正确,请更正。新泽西州的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