ResourceConfig实例不包含任何根资源类
这里怎么了?
The ResourceConfig instance does not contain any root resource classes. Dec 10, 2010 10:21:24 AM com.sun.jersey.spi.spring.container.servlet.SpringServlet initiate SEVERE: Exception occurred when intialization com.sun.jersey.api.container.ContainerException: The ResourceConfig instance does not contain any root resource classes. at com.sun.jersey.server.impl.application.RootResourceUriRules.<init>(RootResourceUriRules.java:103) at com.sun.jersey.server.impl.application.WebApplicationImpl._initiate(WebApplicationImpl.java:1182) at com.sun.jersey.server.impl.application.WebApplicationImpl.access$600(WebApplicationImpl.java:161) at com.sun.jersey.server.impl.application.WebApplicationImpl$12.f(WebApplicationImpl.java:698) at com.sun.jersey.server.impl.application.WebApplicationImpl$12.f(WebApplicationImpl.java:695) at com.sun.jersey.spi.inject.Errors.processWithErrors(Errors.java:197) at com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:695) at com.sun.jersey.spi.spring.container.servlet.SpringServlet.initiate(SpringServlet.java:117)
过滤:
<filter> <filter-name>JerseyFilter</filter-name> <filter-class>com.sun.jersey.spi.spring.container.servlet.SpringServlet</filter-class> <init-param> <param-name>com.sun.jersey.config.feature.Redirect</param-name> <param-value>true</param-value> </init-param> <init-param> <param-name>com.sun.jersey.config.property.JSPTemplatesBasePath</param-name> <param-value>/views/</param-value> </init-param> <init-param> <param-name>com.sun.jersey.config.property.WebPageContentRegex</param-name> <param-value>/(images|css|jsp)/.*</param-value> </init-param> </filter> <filter-mapping> <filter-name>JerseyFilter</filter-name> <url-pattern>/myresource/*</url-pattern> </filter-mapping>
码:
@Path ("/admin") public class AdminUiResource { @GET @Produces ("text/html") @Path ("/singup") public Viewable getSignUp () { return new Viewable("/public/signup", "Test"); } }
你试过添加吗?
<init-param> <param-name>com.sun.jersey.config.property.packages</param-name> <param-value>my.package.name</param-value> </init-param>
到你的SpringServlet定义? 显然,用AdminUiResource所在的包来replacemy.package.name,并确保它在类path中。
我是新泽西州 – 我有同样的问题,但是当我删除“/”,只是使用@path(“pipe理员”)它的工作。
@Path("admin") public class AdminUiResource { ... }
这意味着, 它找不到任何可以作为泽西REST风格的Web服务执行的类。
检查:
- web.xml中是否缺less“
com.sun.jersey.config.property.packages
”。 - “
com.sun.jersey.config.property.packages
”参数的值是否丢失或无效(提到的包不存在)。 它应该是一个包,你把你的POJO类作为jersey服务运行。 - 是否至less存在一个POJO类,它有一个用
@Path
属性注解的方法。
你需要添加你的软件包名称
<init-param> <param-name>com.sun.jersey.config.property.packages</param-name> <param-value>your.package.name</param-value> </init-param>
还有一个事情我知道,
MAVEN BUILD之后,我需要刷新我的项目,否则显示同样的错误。
请评论如果你知道我们需要刷新项目的原因?
您的资源包应包含至less一个pojo,它或者用@Path注释,或者至less有一个用@Path注释的方法或者一个请求方法指示符,比如@GET,@PUT,@ POST或者@DELETE。 资源方法是使用请求方法标识符注释的资源类的方法。 这解决了我的问题..
我用JBOSS EAP 6.1运行了这个问题。 我能够通过eclipse将我的代码部署到JBOSS服务器,但是一旦我试图将这个文件作为WAR文件部署到JBOSS,我开始出现这个错误。
解决的方法是将web.xmlconfiguration为通过允许两者协同工作来与JBOSS正常工作。
以下两行在web.xml中被注释掉,以允许JBOSS自己完成configuration
<!-- <init-param> <param-name>com.sun.jersey.config.property.packages</param-name> <param-value>com.your.package</param-value> </init-param> -->
然后添加下面的上下文参数
<context-param> <param-name>resteasy.scan</param-name> <param-value>false</param-value> </context-param> <context-param> <param-name>resteasy.scan.resources</param-name> <param-value>false</param-value> </context-param> <context-param> <param-name>resteasy.scan.providers</param-name> <param-value>false</param-value> </context-param>
我得到这个exception,因为Web.xml中缺lessResourseConfig。
加:
<init-param> <param-name>com.sun.jersey.config.property.packages</param-name> <param-value>/* Name of Package where your service class exists */</param-value> </init-param>
**服务类表示:包含以下服务的类:@Path(“/ orders”)
我尝试从eclipse项目运行webapp时遇到了同样的问题。 只要将.class文件复制到/WEB-INF/classes
它就能很好地工作。
基本上我纠正它像下面,一切工作正常。
<servlet> <servlet-name >MyWebApplication</servlet-name> <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class> <init-param> <param-name>com.sun.jersey.config.feature.Redirect</param-name> <param-value>true</param-value> </init-param> <init-param> <param-name>com.sun.jersey.config.property.JSPTemplatesBasePath</param-name> <param-value>/views/</param-value> </init-param> <init-param> <param-name>com.sun.jersey.config.property.WebPageContentRegex</param-name> <param-value>/(images|css|jsp)/.*</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>MyWebApplication</servlet-name> <url-pattern>/myapp/*</url-pattern> </servlet-mapping>
我有同样的问题,testing了一堆不同的例子,并尝试了所有可能的解决scheme。 最终为我工作的是当我在课程上添加了一个@Path("")
,我已经把它留在了外面。
有同样的问题,发现这是我部署我的源代码的方式的一个问题。 正如错误消息所示: "...does not contain any root resource classes"
。 所以在configuration的软件包中找不到任何资源类。 我只是部署了错误的类 – 这就是为什么它没有拿起它。
我忘了将我的类文件部署在WAR的/ WEB-INF / classes目录中 – 最初我只是直接在WAR文件的根目录中。 因此,当它查找资源类时,它们找不到它们 – 因为它们存在于不同的(错误的)位置。
导致此错误的另一个可能原因是您忘记将已在/WEBINF/lib
文件夹中的库添加到构buildpath中(例如,在导入.war
文件时未在向导中询问时检查库)。 刚刚发生在我身上。
它发生在我部署我的main.jar时,没有检查Eclipse的导出jar菜单中的添加目录条目框。
同样的问题 – web.xml看起来像这样:
<servlet> <servlet-name>JerseyServlet</servlet-name> <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class> <init-param> <param-name>javax.ws.rs.Application</param-name> <param-value>com.mystuff.web.JerseyApplication</param-value> </init-param> ...
提供自定义应用程序将覆盖任何XMLconfiguration的自动检测类。 你需要实现正确的方法来编写自己的代码来连接类。 看到javadocs。
那么,答复有点晚了。 我面临同样的问题,我的Googlesearch是徒劳的。 但是,我设法find了问题所在。 得到这个错误的原因可能有很多,但是由于下面的原因,我得到了这个错误,我想和我的开发人员分享一下。
- 我以前使用泽西岛1.3,我得到这个错误。 但是当我把jar子升级到泽西岛的最新版本时,这个问题就解决了。
- 我得到这个错误的另一个例子是当我试图通过构build一个war文件将我的服务部署到JBoss。 我犯了一个错误,即在.war中包含Java文件,而不是java类。
我必须在@path结尾添加一个尾随的正斜杠
@Path ("/admin/")
好吧…对于我来说,只要将“servlet-class”分配给com.sum.jersey.spi.container.servlet.ServletContainer,我正在使用IDE(Eclipse Mars)
<servlet> <servlet-name>Jersey Web Application</servlet-name> <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Jersey Web Application</servlet-name> <url-pattern>/frontend/*</url-pattern> </servlet-mapping>
但出于某种原因,我不得不重新启动我的电脑,以在我的本地主机工作。 如果还不行? 你必须在你的web.xml中添加这个代码在“servlet”标签之间。
<init-param> <param-name>com.sun.jersey.config.property.packages</param-name> <param-value>the.package.name</param-value> </init-param>
“the.package.name”是你有你的类的包名。 如果您使用IDE,请刷新项目并在Tomcat中再次运行。 还不行? 重新启动您的电脑,将工作。
另一件要检查的是以前条目的组合
你可以在你的web.xml文件中这样做:
<init-param> <param-name>com.sun.jersey.config.property.packages</param-name> <param-value>com.acme.rest</param-value> </init-param>
你可以拥有
<context-param> <param-name>resteasy.scan</param-name> <param-value>false</param-value> </context-param> <context-param> <param-name>resteasy.scan.providers</param-name> <param-value>false</param-value> </context-param> <context-param> <param-name>resteasy.scan.resources</param-name> <param-value>false</param-value> </context-param>
但是你不能同时拥有这种错误。 在这种情况下的解决办法是注释掉其中一个(可能第一个代码片段将被注释掉)
是的,为com.sun.jersey.config.property.packages添加init参数为我解决了这个问题。
将一个泽西rest服务合并到基于maven的spring应用程序中,并得到这个错误。
我也有这样的错误,请照顾xml中的configuration。
我写了com.sun.jersey.comfig.property.packages
而不是com.sun.jersey.config.property.packages
纠正后,它正在工作。
这个问题是因为jersey无法find你的rest服务声明的依赖包
检查你的项目包发行版,并声明与你的web.xml参数值相等
在我的情况下,我已经从战争中导入了两次build立path的jar子。 删除显示错误部署描述符错误页面的额外jar后,它工作正常
join
<init-param> <param-name>com.sun.jersey.config.property.packages</param-name> <param-value>service.package.name</param-value> </init-param>