这里出了什么问题?
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");
}
}
答案 0 :(得分:80)
您是否尝试过添加
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>my.package.name</param-value>
</init-param>
你的SpringServlet定义?显然,将my.package.name替换为AdminUiResource所在的包,并确保它在类路径中。
答案 1 :(得分:31)
我是泽西岛的新手 - 我遇到了同样的问题,但是当我删除了“/”并且只使用了@path(“admin”)时,它就有效了。
@Path("admin")
public class AdminUiResource { ... }
答案 2 :(得分:27)
您需要在
添加您的包裹名称<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>your.package.name</param-value>
</init-param>
还有一个我注意到的琐事,
我需要在 MAVEN BUILD 之后刷新我的项目,否则它会向我显示相同的错误。
请评论如果您知道我们需要刷新项目的原因?
答案 3 :(得分:26)
这意味着,找不到任何可以作为jersey RESTful Web服务执行的类。
检查:
com.sun.jersey.config.property.packages
”是否缺失
web.xml中。 com.sun.jersey.config.property.packages
”的值
param缺失或无效(提到的包不存在)。它应该是一个包,你把你的POJO类作为泽西服务运行。@Path
属性注释的方法。答案 4 :(得分:12)
您的资源包应包含至少一个pojo,该pojo使用@Path注释或至少有一个使用@Path注释的方法或请求方法指示符,例如@ GET,@ PUT,@ POST或@DELETE。资源方法是使用请求方法指示符注释的资源类的方法。这解决了我的问题..
答案 5 :(得分:10)
我用JBOSS EAP 6.1遇到了这个问题。我能够通过eclipse将我的代码部署到JBOSS服务器,但是一旦我尝试将该文件作为WAR文件部署到JBOSS,我就开始收到此错误。
解决方案是通过允许两者协同工作来配置web.xml以与JBOSS一起正常工作。
以下两行在web.xml中被注释掉,以允许JBOSS执行自己的配置
<!--
<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>
答案 6 :(得分:9)
基本上我会像下面一样纠正它,一切正常。
<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>
答案 7 :(得分:8)
我收到此异常,因为Web.xml中缺少ResourseConfig。
添加:
<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")
答案 8 :(得分:7)
尝试从eclipse项目运行webapp时遇到了同样的问题。一旦我将.class文件复制到/WEB-INF/classes
,它就能很好地工作。
答案 9 :(得分:6)
我遇到了同样的问题,测试了一堆不同的例子,并尝试了所有可能的解决方案。最后让它为我工作的是当我在课程专线上添加@Path("")
时,我把它留了下来。
答案 10 :(得分:4)
同样的问题 - 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>
...
提供自定义应用程序会覆盖任何XML配置的类自动检测。您需要实现正确的方法来编写自己的代码来连接类。请参阅javadocs。
答案 11 :(得分:3)
此错误的另一个可能原因是您忘记将已存在于/WEBINF/lib
文件夹中的库添加到构建路径(例如,在导入.war
- 文件时,而不是检查库当在向导中询问时)。刚发生在我身上。
答案 12 :(得分:3)
我在部署main.jar时遇到了这种情况,而没有检查 Eclipse 中导出jar 菜单中的添加目录条目框
答案 13 :(得分:3)
有同样的问题,发现我部署源代码的方式存在问题。正如错误消息所示:"...does not contain any root resource classes"
。所以它在配置的包中找不到任何资源类。我只是把类错误地部署了 - 这就是为什么它没有把它拿起来。
我忘了将我的类文件部署在WAR的/ WEB-INF / classes目录中 - 最初我只是将它直接放在WAR文件的根目录中。因此,当它寻找资源类时,它找不到它们 - 因为它们存在于不同的(错误的)位置。
答案 14 :(得分:2)
我必须在@path
的末尾添加一个尾部正斜杠@Path ("/admin/")
答案 15 :(得分:2)
嗯,回复有点晚了。我遇到了同样的问题,我的谷歌搜索都是徒劳的。但是,我设法找到了问题所在。可能有很多原因导致此错误,但由于以下原因我收到了错误,我想与其他开发人员分享。
答案 16 :(得分:2)
好的......对我来说工作很好,只需要分配&#34; servlet-class&#34;到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>
但由于某种原因,我不得不重新启动计算机以便在我的localhost中工作。如果还不行?你必须在你的web.xml中添加这段代码,在&#34; servlet&#34;之间。标签。
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>the.package.name</param-value>
</init-param>
&#34; the.package.name&#34;是您拥有课程的包名。如果您使用的是IDE,请刷新项目并在Tomcat中再次运行。还是不行吗?重启你的电脑,然后就可以了。
答案 17 :(得分:2)
要检查的另一件事是先前条目的组合
您可以在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>
但你不能同时拥有这两种错误或者你得到这种错误。在这种情况下的修复是注释掉一个或另一个(可能第一个代码片段将被注释掉)
答案 18 :(得分:1)
是的,为com.sun.jersey.config.property.packages添加init参数修复了这个问题。
将泽西休息服务合并到基于maven的spring应用程序中并得到此错误。
答案 19 :(得分:1)
我也遇到了这种错误,请注意xml中的配置。
我写道com.sun.jersey.comfig.property.packages
而不是
com.sun.jersey.config.property.packages
纠正后,它正在工作。
答案 20 :(得分:1)
这个问题是因为球衣无法为你的休息找到一个依赖包 服务声明
检查您的项目包分发并声明它等于您的web.xml参数值
答案 21 :(得分:1)
可能为时已晚,但这就是我解决此错误的方法。
如果此解决方案无效,
<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>
在日食中:
在项目或选择项目上右键单击,然后按 Alt + Enter 在打开的窗口的左侧,找到 Java构建路径
从右侧选项卡面板中选择“库”:如果有任何损坏或在罐子顶部显示十字标记,请删除并再次添加相同的罐子
应用并关闭
重建您的项目
答案 22 :(得分:0)
在我的情况下,我在从war导入后在构建路径中添加了两次jar。 删除显示错误部署描述符错误页面的额外jar后,它工作正常
添加
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>service.package.name</param-value>
</init-param>
答案 23 :(得分:0)
也因不同原因两次遇到了这个问题。我第一次忘记包含
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>my.package.name</param-value>
</init-param>
如之前的评论所述,一旦我这样做,它便开始工作。
但是...第二天,我启动了Eclipse,希望从我中断的地方继续执行,而不是让我的程序正常工作,它再次显示了同样的错误。我开始检查是否不小心进行了一些更改并保存了损坏的文件,但是找不到任何此类错误,并且文件看起来完全像我的示例,都是按顺序进行的。由于它是在前一天工作的,经过一些初步的搜索,我想,也许是Eclipse或Tomcat的故障等等,所以让我们尝试进行一些更改,看看它是否有反应。因此,我在web.xml文件中做了一个空格+退格键,只是为了使Eclipse知道文件已更改,然后保存了它。下一步是重新启动Tomcat服务器(从Eclipse IDE),瞧,它又能正常工作了!
也许有更广泛经验的人可以解释所有这一切背后的真正问题是什么?
答案 24 :(得分:-1)
此异常的主要原因是:
您未在使用@Path
的地方提供正确的软件包名称,或者忘记在web.xml /配置文件中配置(Rest API类文件的软件包名称,您的类软件包的名称)
在<init-param>
内检查此配置