ResourceConfig实例不包含任何根资源类

cma*_*ani 78 jersey

这里出了什么问题?

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)
Run Code Online (Sandbox Code Playgroud)

过滤:

<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>
Run Code Online (Sandbox Code Playgroud)

码:

@Path ("/admin")
public class AdminUiResource {

  @GET
  @Produces ("text/html")
  @Path ("/singup")
  public Viewable getSignUp () {
    return new Viewable("/public/signup", "Test");
  }
}
Run Code Online (Sandbox Code Playgroud)

小智 81

你试过添加吗?

<init-param>
  <param-name>com.sun.jersey.config.property.packages</param-name>
  <param-value>my.package.name</param-value>
</init-param>
Run Code Online (Sandbox Code Playgroud)

你的SpringServlet定义?显然,将my.package.name替换为AdminUiResource所在的包,并确保它在类路径中.

  • 对于不使用Spring的人:你需要将这个`init-param`添加到`com.sun.jersey.spi.container.servlet.ServletContainer` servlet中. (3认同)

Anv*_*hat 32

我是泽西的新手 - 我遇到了同样的问题,但是当我删除了"/"并且只使用了@path("admin")时,它就起作用了.

@Path("admin")
public class AdminUiResource { ... }
Run Code Online (Sandbox Code Playgroud)


Paw*_*wan 28

这意味着,它找不到任何可以作为泽西RESTful Web服务执行的类.

校验:

  • com.sun.jersey.config.property.packages您的web.xml中是否缺少' '.
  • ' com.sun.jersey.config.property.packages'param的值是否缺失或无效(提到的包不存在).它应该是一个包,你把你的POJO类作为泽西服务运行.
  • 是否存在至少一个POJO类,其具有使用@Path属性注释的方法.

  • 我的配置文件中的几行引用了一个空目录,导致此错误.`<servlet> <servlet-name> Jersey Web Services </ servlet-name> <servlet-class> com.sun.jersey.spi.spring.container.servlet.SpringServlet </ servlet-class> <! - <init -param> <param-name> com.sun.jersey.config.property.packages </ param-name> -------> <param-value> package.without.any.webservices </ param-value > </ init-param> - > <load-on-startup> 1 </ load-on-startup> </ servlet> (3认同)

Vde*_*deX 28

您需要添加您的包裹名称

<init-param>
  <param-name>com.sun.jersey.config.property.packages</param-name>
  <param-value>your.package.name</param-value>
</init-param>
Run Code Online (Sandbox Code Playgroud)

还有一点我注意到了,
我需要在MAVEN BUILD之后刷新我的项目,否则它会向我显示同样的错误.
请评论如果您知道我们需要刷新项目的原因?

  • 你摇滚!在Maven安装后刷新我的项目时,它可以正常工作!谢谢。:) (2认同)
  • @Tmp谢谢,那真的很奇怪。刷新后工作正常。再加一个骇客 (2认同)

hak*_*ish 12

您的资源包应包含至少一个pojo,该pojo使用@Path注释或至少有一个使用@Path注释的方法或请求方法指示符,例如@ GET,@ PUT,@ POST或@DELETE.资源方法是使用请求方法指示符注释的资源类的方法.这解决了我的问题..


小智 11

我用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> -->
Run Code Online (Sandbox Code Playgroud)

然后添加以下上下文参数

<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>
Run Code Online (Sandbox Code Playgroud)

  • 这个建议适用于Wildfly 8.1.不过不必添加`<context-param />`部分.只需要删除`<param-name> com.sun.jersey.config.property.packages </ param-name>``<init-param />`部分. (3认同)
  • 我也是.只是评论/删除`<init-param>`修复了Wildly 8.2.0上的这个问题; 但是我有其他的麻烦,比如我正在部署的应用程序不会与Jersey on Wildly一起运行.Jersey(由GlassFish使用)和RestEasy(由Wildfly使用)具有不同的配置. (3认同)
  • 这个建议对Wildfly10有用。 (2认同)
  • 我挣扎了几个小时。这真的帮助了我! (2认同)

cma*_*ani 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>
Run Code Online (Sandbox Code Playgroud)


小智 9

我得到了这个例外,因为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>
Run Code Online (Sandbox Code Playgroud)

服务类意味着:包含以下服务的类: @Path("/orders")


Rod*_*sio 7

尝试从eclipse项目运行webapp时遇到了同样的问题.一旦我将.class文件复制到/WEB-INF/classes它就完美了.


小智 6

我遇到了同样的问题,测试了一堆不同的例子,并尝试了所有可能的解决方案.最后让它为我工作的是当我@Path("")在课堂上添加了一个,我把它留了下来.


小智 5

遇到了同样的问题,发现是我部署源代码的方式有问题。正如错误消息所说:"...does not contain any root resource classes"。所以它在配置的包中找不到任何资源类。我只是错误地部署了课程 - 这就是它没有选择它的原因。

我忘记将我的类文件部署在 WAR 的 /WEB-INF/classes 目录中 - 最初我只是将它直接放在 WAR 文件的根目录中。所以当它寻找资源类时它没有找到它们 - 因为它们存在于不同的(错误的)位置。