L'instance ResourceConfig ne contient pas de classes de ressources racine
Qu'est-ce qui ne va pas ici?
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.access0(WebApplicationImpl.java:161)
at com.sun.jersey.server.impl.application.WebApplicationImpl.f(WebApplicationImpl.java:698)
at com.sun.jersey.server.impl.application.WebApplicationImpl.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)
filtre:
<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");
}
}
25 réponses
avez-vous essayé d'ajouter
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>my.package.name</param-value>
</init-param>
à votre définition de SpringServlet? Évidemment remplacer mon.paquet.nommez le paquet dans lequel se trouve Administriresource et assurez-vous qu'il se trouve dans classpath.
je suis new - Jersey-j'ai eu le même problème, mais quand j'ai enlevé le " / "et juste utilisé le @path ("admin") il a fonctionné.
@Path("admin")
public class AdminUiResource { ... }
cela signifie, il n'a pas pu trouver de classe qui puisse être exécutée comme jersey RESTful web service.
Case:
- Si "
com.sun.jersey.config.property.packages
est manquant dans votre Web.XML. - si la valeur pour "
com.sun.jersey.config.property.packages
" param est manquant ou invalide (le paquet mentionné n'existe pas). Il devrait être un paquet où vous avez mis vos classes de POJO qui fonctionne comme des services jersey. - S'il existe au moins une classe POJO, qui a une méthode annotée avec l'attribut
@Path
.
VOUS DEVEZ AJOUTER VOTRE NOM DE PAQUET À
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>your.package.name</param-value>
</init-param>
AUSSI UNE CHOSE STUPIDE QUE J'AI REMARQUÉ,
Je dois rafraîchir mon projet après Maven BUILD sinon il me montre la même erreur.
s'il vous Plaît commentaire Si vous le savez la raison pourquoi nous avons besoin de l'actualisation du projet?
votre paquet de ressources doit contenir au moins un pojo annoté avec @Path ou avoir au moins une méthode annotée avec @Path ou un indicateur de méthode de demande, tel que @GET, @PUT, @POST, ou @DELETE. Les méthodes de Ressource sont des méthodes d'une classe de ressource annotée avec un indicateur de méthode de demande. Cela a résolu mon problème..
j'ai rencontré ce problème avec JBOSS EAP 6.1. J'ai pu déployer mon code via eclipse sur le serveur JBOSS mais une fois que j'ai essayé de déployer le fichier en tant que fichier de guerre à JBOSS j'ai commencé à recevoir cette erreur.
la solution était de configurer le web.xml doit fonctionner correctement avec JBOSS en permettant aux deux de travailler ensemble.
les deux lignes suivantes ont été commentées sur le web.xml pour permettre à JBOSS de faire ses propres configurations
<!--
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>com.your.package</param-value>
</init-param> -->
et ensuite ajouter le contexte suivant params après
<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>
En Gros, Je l'ai corrigé comme ci-dessous et tout a bien fonctionné.
<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>
j'obtiens cette exception, à cause d'un manque de ResourseConfig dans Web.XML.
ajouter:
<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>
classe de Service signifie: classe qui contient des services comme: @Path("/orders")
j'ai eu le même problème avec essayer d'exécuter le webapp à partir d'un projet eclipse. Dès que j'ai copié le .les fichiers de classe pour /WEB-INF/classes
il a parfaitement fonctionné.
j'ai eu le même problème, tester un tas d'exemples différents, et essayé toutes les solutions possibles. Ce qui a finalement fonctionné pour moi était quand j'ai ajouté un @Path("")
au-dessus de la ligne de classe, j'avais oublié cela.
même numéro - web.xml ressemblait à ceci:
<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>
...
fournissant une application personnalisée l'emporte sur toute détection automatique des classes configurée en XML. Vous devez mettre en œuvre les bonnes méthodes pour écrire votre propre code pour transférer les classes. Voir la javadoc.
avait le même problème et a découvert que c'était un problème avec la façon dont j'ai déployé mon code source. Comme le dit le message d'erreur: "...does not contain any root resource classes"
. Il n'a donc pas pu trouver de classes de ressources dans le paquet configuré. J'ai mal utilisé les cours, c'est pour ça que ça n'a pas marché.
j'ai oublié de déployer mes fichiers de classe dans le répertoire /WEB-INF/classes de la guerre - au départ je l'avais juste directement dans la racine du fichier de guerre. Donc quand il a cherché des classes de ressources il ils ne les ont pas trouvés - parce qu'ils existaient dans un autre (mauvais) endroit.
une autre cause possible de cette erreur est que vous avez oublié d'ajouter les bibliothèques qui sont déjà dans le dossier /WEBINF/lib
au chemin de compilation (par exemple lors de l'importation d'un fichier .war
et de ne pas vérifier les bibliothèques lorsque demandé dans l'Assistant). M'est juste arrivé.
Il m'est arrivé quand j'ai déployé mon principal.jar, sans cocher la case ajouter des entrées de répertoire dans le menu" 151910920 export jar dans Eclipse .
Eh bien, il est un peu tard pour répondre. J'ai affronté le même problème et mes recherches sur Google ont été vaines. Cependant, j'ai réussi à trouver quel était le problème. Il pourrait y avoir de nombreuses raisons pour obtenir cette erreur, mais j'ai obtenu l'erreur due à la suivante et je voulais le partager avec mes collègues développeurs.
- j'ai déjà utilisé Jersey 1.3 et j'ai eu cette erreur. Mais quand j'ai mis à jour les pots à la dernière version de Jersey, ce problème a été résolu.
- une autre erreur m'est survenue lorsque j'ai essayé de déployer mon service dans JBoss en construisant un fichier de guerre. J'ai fait l'erreur d'inclure les fichiers Java dans le .la guerre au lieu des cours de java.
j'ai dû ajouter une barre oblique arrière à la fin de @path
@Path ("/admin/")
Ok... Pour moi, c'est très bien d'assigner la classe servlet à com.somme.Jersey.le spi.conteneur.servlet.ServletContainer, j'utilise 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>
, mais pour une raison que j'ai dû redémarrer mon ordinateur afin de travailler dans mon localhost. Si toujours pas de travail? Vous devez ajouter dans votre site web.xml ce code entre la balise "servlet".
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>the.package.name</param-value>
</init-param>
" the.paquet.nom" est le nom du paquet où vous avez vos cours. Si vous êtes en utilisant IDE, rafraîchir le projet et exécuter à nouveau dans Tomcat. toujours pas de travail? redémarrez votre ordinateur et fonctionnera.
une Autre chose à vérifier est une combinaison des entrées précédentes
vous pouvez avoir dans votre web.fichier xml ceci:
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>com.acme.rest</param-value>
</init-param>
et vous pouvez avoir
<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>
mais vous ne pouvez pas avoir les deux ou vous obtenez ce genre d'erreur. La solution dans ce cas serait de commenter l'un ou l'autre (probablement le premier extrait de code serait commenté)
oui, l'ajout de l'init-param pour com.soleil.Jersey.config.propriété.les paquets résolu ce problème pour moi.
fusionnait un jersey rest services dans Maven basé application de printemps et a obtenu cette erreur.
j'ai aussi obtenu ce genre d'erreur, s'il vous plaît prendre soin des configurations en xml.
j'ai écrit
com.sun.jersey.comfig.property.packages
au lieu de
com.sun.jersey.config.property.packages
après correction ça marche.
ce problème est parce que jersey ne peut pas trouver un paquet de dépendance pour votre repos service déclaré
vérifiez la distribution de votre paquet de projet et affirmez que c'est égal à votre web.xml param valeur
dans mon cas j'ai ajouté les pots deux fois dans le chemin de construction après l'importation de la guerre. Il fonctionnait bien après avoir enlevé les bocaux supplémentaires qui montraient des pages d'erreur de descripteur de déploiement d'erreur
ajouter
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>service.package.name</param-value>
</init-param>
probablement trop tard, mais c'est comme ça que j'ai résolu cette erreur.
si cette solution ne fonctionne pas,
<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>
Dans eclipse:
clic droit sur votre projet ou sélectionnez Projet et appuyez sur Alt + Enter sur le côté gauche de la fenêtre ouverte trouver Java Build Path
sélectionnez bibliothèques à partir de le panneau de l'onglet de droite: s'il y a quelque chose qui est corrompu ou montrant la marque de croix sur le dessus des pots, enlever et ajouter le même pot à nouveau
appliquer et fermer
reconstruire votre projet
est également venu à travers ce problème, deux fois pour des raisons différentes. La première fois que j'ai oublié d'inclure
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>my.package.name</param-value>
</init-param>
comme décrit dans les commentaires précédents, et une fois que j'ai fait cela, il a commencé à fonctionner.
encore... un autre jour, J'ai commencé Eclipse, s'attendant à continuer là où je me suis arrêté, et au lieu de faire fonctionner mon programme, il a montré la même erreur Une fois de plus. J'ai commencé à vérifier si j'avais accidentellement fait quelques changements et sauvé corrompu le fichier, mais n'a pas pu trouver une telle erreur et le fichier ressemblait exactement aux exemples que j'ai, tous dans l'ordre. Comme ça a marché la veille, après quelques recherches initiales, je me suis dit que c'était peut-être une éclipse, ou un problème de Tomcat, alors essayons de faire quelques changements et voyons si ça réagit. Donc, j'ai fait un espace + backspace dans le web.fichier xml, juste pour tromper Eclipse que le fichier est changé, et l'a enregistré alors. L'étape suivante a été de redémarrer Tomcat server (à partir D'Eclipse IDE) et voilà, ça marche à nouveau!
peut-être quelqu'un avec une plus grande expérience pourrait expliquer ce que le problème était vraiment derrière tout cela?
la cause principale de cette Exception est:
vous n'avez pas donné le nom correct du paquet lorsque vous utilisez le @Path
ou avez oublié de configurer dans web.xml / fichier de Configuration (reste API Classe nom du paquet, votre classe Nom du paquet)
vérifier cette Configuration à l'intérieur de <init-param>