Frage Die ResourceConfig-Instanz enthält keine Stammressourcenklassen


Was läuft hier falsch?

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>
    <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>

Code:

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

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

75
2017-12-10 18:39


Ursprung


Antworten:


Hast du versucht, etwas hinzuzufügen?

<init-param>
  <param-name>com.sun.jersey.config.property.packages</param-name>
  <param-value>my.package.name</param-value>
</init-param>

zu Ihrer SpringServlet-Definition? Ersetzen Sie offensichtlich my.package.name durch das Paket, in dem sich AdminUiResource befindet, und vergewissern Sie sich, dass es sich im Klassenpfad befindet.


77
2017-12-10 22:51



Ich bin neu in Jersey - ich hatte das gleiche Problem, aber als ich das "/" entfernte und nur den @path ("admin") benutzte, funktionierte es.

@Path("admin")
public class AdminUiResource { ... }

30
2018-01-25 07:08



Das heisst, Es konnte keine Klasse gefunden werden, die als Jersey RESTful Web Service ausgeführt werden kann.

Prüfen:

  • Ob 'com.sun.jersey.config.property.packages"fehlt in deinem web.xml.
  • Ob Wert für 'com.sun.jersey.config.property.packages" param fehlt oder ist ungültig (das genannte Paket existiert nicht). Es sollte ein Paket sein, wo Sie Ihre POJO-Klassen abgelegt haben, die als Jersey-Dienste laufen.
  • Gibt es mindestens eine POJO-Klasse, für die eine Methode mit Anmerkungen versehen ist? @Path Attribut.

26
2018-05-13 16:25



Sie müssen Ihren Paketnamen beifügen

<init-param>
  <param-name>com.sun.jersey.config.property.packages</param-name>
  <param-value>your.package.name</param-value>
</init-param>

AUCH EINE DUMME, DIE ICH BEKANNT HABE,
  Ich muss mein Projekt nach aktualisieren MAVEN BUILD sonst zeigt es mir denselben Fehler.
Bitte Kommentar Wenn Sie wissen, warum wir das Projekt aktualisieren müssen?


26
2017-10-31 06:15



Ihr Ressourcenpaket sollte mindestens ein Pojo enthalten, das entweder mit @Path annotiert ist oder mindestens eine Methode mit @Path oder einem Anforderungsmethodenbezeichner wie @GET, @PUT, @POST oder @DELETE annotiert hat. Ressourcenmethoden sind Methoden einer Ressourcenklasse, die mit einem Request-Method-Bezeichner versehen sind. Das hat mein Problem gelöst.


12
2018-02-01 09:00



Ich habe dieses Problem mit JBOSS EAP 6.1 gelöst. Ich konnte meinen Code über Eclipse auf den JBOSS-Server übertragen, aber nachdem ich versucht hatte, die Datei als WAR-Datei für JBOSS bereitzustellen, fing ich an, diesen Fehler zu bekommen.

Die Lösung bestand darin, die Datei web.xml so zu konfigurieren, dass sie mit JBOSS ordnungsgemäß funktionierte, indem sie beiden die Zusammenarbeit ermöglichte.

Die folgenden zwei Zeilen wurden in web.xml auskommentiert, damit JBOSS seine eigenen Konfigurationen vornehmen kann

<!--  
    <init-param>
    <param-name>com.sun.jersey.config.property.packages</param-name>
    <param-value>com.your.package</param-value>
</init-param> -->

Fügen Sie anschließend die folgenden Kontextparameter hinzu

<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>

10
2018-02-17 20:25



Im Grunde habe ich es wie unten korrigiert und alles hat gut funktioniert.

<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>

8
2017-12-11 00:36



Ich erhalte diese Ausnahme aufgrund einer fehlenden ResourseConfig in Web.xml.

Hinzufügen:

<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>

Serviceklasse bedeutet: Klasse, die Services enthält wie: @Path("/orders")


8
2018-02-22 06:04



Ich hatte das gleiche Problem mit dem Versuch, die Webapp von einem Eclipse-Projekt auszuführen. Sobald ich die .class-Dateien kopiert habe /WEB-INF/classes es hat perfekt funktioniert.


7
2018-03-30 18:44



Ich hatte das gleiche Problem, testete eine Reihe verschiedener Beispiele und probierte alle möglichen Lösungen aus. Was es schließlich für mich funktionierte, war als ich eine hinzugefügt habe @Path("") Über die Klassengrenze hatte ich das weggelassen.


5
2017-09-21 03:53



Gleiches Problem - web.xml sah folgendermaßen aus:

<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>
...

Das Bereitstellen einer benutzerdefinierten Anwendung überschreibt jede XML-konfigurierte automatische Erkennung von Klassen. Sie müssen die richtigen Methoden implementieren, um Ihren eigenen Code zu schreiben, um die Klassen zu verdrahten. Sieh dir die Javadocs an.


4
2018-02-11 18:15