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");
}
}
"/singup"
statt"/signup"
irgendeine Wirkung hier zu haben?Antworten:
Haben Sie versucht, hinzuzufügen
zu Ihrer SpringServlet-Definition? Ersetzen Sie my.package.name offensichtlich durch das Paket, in dem sich AdminUiResource befindet, und stellen Sie sicher, dass es sich im Klassenpfad befindet.
quelle
init-param
demcom.sun.jersey.spi.container.servlet.ServletContainer
Servlet hinzufügen .Ich bin neu in Jersey - ich hatte das gleiche Problem, aber als ich das "/" entfernte und nur den @path ("admin") verwendete, funktionierte es.
quelle
Sie müssen Ihren Paketnamen unter hinzufügen
quelle
Dies bedeutet, dass keine Klasse gefunden werden konnte, die als Jersey RESTful-Webdienst ausgeführt werden kann.
Prüfen:
com.sun.jersey.config.property.packages
' in Ihrer web.xml fehlt.com.sun.jersey.config.property.packages
' param fehlt oder ungültig ist (das erwähnte Paket existiert nicht). Es sollte ein Paket sein, in dem Sie Ihre POJO-Klassen platziert haben, die als Trikotdienste ausgeführt werden.@Path
Attribut versehen ist ?quelle
<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>
Ihre Ressource Paket sollte mindestens eine pojo enthalten , die mit entweder kommentierte
@Path
oder hat mindestens ein Verfahren mit Anmerkungen versehen@Path
oder einer Anfrage Methodendesignator, wie@GET
,@PUT
,@POST
, oder@DELETE
. Ressourcenmethoden sind Methoden einer Ressourcenklasse, die mit einem Anforderungsmethodenbezeichner versehen sind. Dies löste mein Problem ...quelle
Ich bin auf dieses Problem mit JBOSS EAP 6.1 gestoßen. Ich konnte meinen Code über Eclipse auf dem JBOSS-Server bereitstellen, aber als ich versuchte, die Datei als WAR-Datei für JBOSS bereitzustellen, wurde dieser Fehler angezeigt.
Die Lösung bestand darin, die Datei web.xml so zu konfigurieren, dass sie ordnungsgemäß mit JBOSS zusammenarbeitet, indem beide zusammenarbeiten.
Die folgenden zwei Zeilen wurden in web.xml auskommentiert, damit JBOSS seine eigenen Konfigurationen vornehmen kann
Fügen Sie anschließend die folgenden Kontextparameter hinzu
quelle
<context-param/>
Abschnitt allerdings nicht hinzufügen . Musste nur den<param-name>com.sun.jersey.config.property.packages</param-name>
<init-param/>
Abschnitt entfernen .<init-param>
Problem, das in Wildly 8.2.0 behoben wurde. Ich hatte jedoch andere Probleme, so dass die App, die ich bereitstellte, nicht mit Jersey on Wildly ausgeführt werden konnte. Jersey (von GlassFish verwendet) und RestEasy (von Wildfly verwendet) haben unterschiedliche Konfigurationen.Grundsätzlich habe ich es wie unten korrigiert und alles hat gut funktioniert.
quelle
Ich erhalte diese Ausnahme aufgrund einer fehlenden ResourseConfig in Web.xml.
Hinzufügen:
Serviceklasse bedeutet: Klasse, die Services enthält wie:
@Path("/orders")
quelle
Ich hatte das gleiche Problem beim Versuch, die Webanwendung von einem Eclipse-Projekt aus auszuführen. Sobald ich die .class-Dateien kopiert habe, hat
/WEB-INF/classes
es perfekt funktioniert.quelle
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 zum Laufen brachte, war, als ich ein
@Path("")
Over-the-Class-Line hinzufügte , das hatte ich weggelassen.quelle
Hatte das gleiche Problem und fand heraus, dass es ein Problem mit der Art und Weise war, wie ich meinen Quellcode bereitstellte. Wie die Fehlermeldung sagt :
"...does not contain any root resource classes"
. Daher konnten im konfigurierten Paket keine Ressourcenklassen gefunden werden. Ich habe die Klassen nur falsch eingesetzt - deshalb hat es sie nicht aufgegriffen.Ich habe vergessen, meine Klassendateien im Verzeichnis / WEB-INF / classes der WAR bereitzustellen - anfangs hatte ich sie nur direkt im Stammverzeichnis der WAR-Datei. Bei der Suche nach Ressourcenklassen wurden diese nicht gefunden, da sie an einem anderen (falschen) Ort vorhanden waren.
quelle
Gleiches Problem - web.xml sah folgendermaßen aus:
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 und die Klassen zu verkabeln. Siehe die Javadocs.
quelle
Eine weitere mögliche Ursache für diesen Fehler ist, dass Sie vergessen haben, die bereits im
/WEBINF/lib
Ordner enthaltenen Bibliotheken zum Erstellungspfad hinzuzufügen (z. B. beim Importieren einer.war
-Datei und nicht beim Überprüfen der Bibliotheken, wenn Sie im Assistenten dazu aufgefordert werden). Ist mir gerade passiert.quelle
Es ist mir passiert, als ich meine main.jar bereitgestellt habe, ohne das Kontrollkästchen Verzeichniseinträge hinzufügen im Menü export export jar in Eclipse zu aktivieren .
quelle
Nun, es ist etwas spät zu antworten. Ich hatte das gleiche Problem und meine Google-Suche war vergebens. Es gelang mir jedoch herauszufinden, wo das Problem lag. Es kann viele Gründe geben, diesen Fehler zu erhalten, aber ich habe den Fehler aus folgenden Gründen erhalten und wollte ihn mit meinen Mitentwicklern teilen.
quelle
Ich musste am Ende von @path einen abschließenden Schrägstrich einfügen
quelle
Ok ... Für mich funktioniert es gut, nur die "Servlet-Klasse" com.sum.jersey.spi.container.servlet.ServletContainer zuzuweisen. Ich verwende IDE (Eclipse Mars).
Aus irgendeinem Grund musste ich meinen Computer neu starten, um in meinem lokalen Host arbeiten zu können. Wenn immer noch nicht funktioniert? Sie müssen diesen Code in Ihrer web.xml zwischen dem "Servlet" -Tag hinzufügen.
"the.package.name" ist der Paketname, in dem Sie Ihre Klassen haben. Wenn Sie IDE verwenden, aktualisieren Sie das Projekt und führen Sie es erneut in Tomcat aus. immer noch nicht arbeiten? Starten Sie Ihren Computer neu und es wird funktionieren.
quelle
Eine andere zu überprüfende Sache ist eine Kombination von vorherigen Einträgen
Sie können Folgendes in Ihrer web.xml-Datei haben:
und du kannst haben
aber Sie können nicht beide haben oder Sie bekommen diese Art von Fehler. Die Lösung in diesem Fall wäre, das eine oder andere auskommentieren (wahrscheinlich würde das erste Code-Snippet auskommentiert).
quelle
Ja, das Hinzufügen des Init-Parameters für com.sun.jersey.config.property.packages hat dieses Problem für mich behoben.
hat einen Trikot-Rest-Service in eine maven-basierte Frühjahrsanwendung zusammengeführt und diesen Fehler erhalten.
quelle
Ich habe auch diese Art von Fehler bekommen, bitte kümmern Sie sich um die Konfigurationen in XML.
Ich schrieb
com.sun.jersey.comfig.property.packages
Anstatt
com.sun.jersey.config.property.packages
Nach der Korrektur funktioniert es.
quelle
Dieses Problem ist darauf zurückzuführen, dass Jersey kein angegebenes Abhängigkeitspaket für Ihren Restdienst finden kann
Überprüfen Sie die Verteilung Ihres Projektpakets und stellen Sie sicher, dass dies Ihrem Parameterwert web.xml entspricht
quelle
Wahrscheinlich zu spät, aber so habe ich diesen Fehler behoben.
Wenn diese Lösung nicht funktioniert,
In der Sonnenfinsternis:
Klicken Sie mit der rechten Maustaste auf Ihr Projekt oder wählen Sie Projekt aus und drücken Sie Alt + Eingabetaste. Suchen Sie auf der linken Seite des geöffneten Fensters den Java-Erstellungspfad
Wählen Sie auf der rechten Registerkarte Bibliotheken aus: Wenn etwas beschädigt ist oder eine Kreuzmarkierung oben auf den Gläsern angezeigt wird, entfernen Sie dasselbe Glas und fügen Sie es erneut hinzu
Übernehmen und schließen
Erstellen Sie Ihr Projekt neu
quelle
In meinem Fall habe ich die Gläser nach dem Import aus dem Krieg zweimal im Build-Pfad hinzugefügt. Es funktionierte einwandfrei, nachdem die zusätzlichen Gläser entfernt wurden, auf denen die Fehlerseiten des Fehlerbereitstellungsdeskriptors angezeigt wurden
Hinzufügen
quelle
Auch kam über dieses Problem zweimal aus verschiedenen Gründen. Das erste Mal habe ich vergessen, aufzunehmen
Wie in den vorherigen Kommentaren beschrieben, und als ich das tat, fing es an zu funktionieren.
Noch ... an einem anderen Tag startete ich Eclipse in der Erwartung, dort fortzufahren, wo ich aufgehört hatte, und anstatt mein Programm zum Laufen zu bringen, zeigte es wieder denselben Fehler. Ich begann zu überprüfen, ob ich versehentlich einige Änderungen vorgenommen und eine beschädigte Datei gespeichert hatte, konnte jedoch keinen solchen Fehler finden, und die Datei sah genauso aus wie die Beispiele, die ich habe, alles in Ordnung. Da es am Tag zuvor nach anfänglicher Suche funktioniert hat, dachte ich, vielleicht ist es eine Eclipse- oder Tomcat-Panne oder so, also versuchen wir einfach, einige Änderungen vorzunehmen und zu sehen, ob es reagiert. Also habe ich ein Leerzeichen + Rücktaste in der Datei web.xml erstellt, um Eclipse zu täuschen, dass die Datei geändert wurde, und sie dann gespeichert. Der nächste Schritt war ein Neustart des Tomcat-Servers (von Eclipse IDE) und voila, es funktioniert wieder!
Vielleicht könnte jemand mit umfassenderer Erfahrung erklären, was das Problem wirklich hinter all dem steckt?
quelle
Hauptursache für diese Ausnahme ist:
Sie haben nicht den richtigen Paketnamen angegeben, unter dem Sie die
@Path
Datei web.xml / Configuration verwendet haben oder deren Konfiguration vergessen haben (Rest API Class File Paketname, Ihr Klassenpaketname).Überprüfen Sie diese Konfiguration im Inneren
<init-param>
quelle