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");
  }
}
75
demandé sur Peter Mortensen 2010-12-10 21:39:14

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.

78
répondu Mike 2010-12-10 22:51:01

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 { ... }
30
répondu Anver Sadhat 2013-10-31 13:29:55

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 .
26
répondu Pawan 2013-01-03 17:07:30

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?

26
répondu VedX 2015-10-28 04:53:20

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

12
répondu hakish 2012-02-01 09:00:13

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>
10
répondu Antman06 2014-02-17 20:25:58

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>
8
répondu cmani 2012-05-25 07:22:51

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

8
répondu TechSunil 2017-11-21 15:14:33

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

7
répondu Rodrigo Asensio 2012-03-30 18:44:14

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.

5
répondu Holstadius 2012-09-21 06:18:36

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.

4
répondu Dustin Getz 2017-01-20 19:33:22

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.

3
répondu NS du Toit 2012-10-28 14:26:38

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

3
répondu bmurauer 2013-05-13 08:31:47

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 .

3
répondu serj 2013-09-12 09:01:43

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.

  1. 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.
  2. 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.
2
répondu Nikhil 2012-03-20 03:31:09

j'ai dû ajouter une barre oblique arrière à la fin de @path

@Path ("/admin/") 
2
répondu MobileMon 2013-04-04 14:26:20

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.

2
répondu user3945851 2015-08-05 17:22:53

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

2
répondu demongolem 2016-01-26 15:27:39

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.

1
répondu Harinath 2014-01-28 11:51:38

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.

1
répondu Ravi Thapa 2014-07-19 18:17:51

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

1
répondu Jose Luis Garcia 2015-03-03 12:18:40

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>
0
répondu Hema 2016-10-27 08:23:06

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

0
répondu Sufiyan Ansari 2018-01-09 12:37:25

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?

0
répondu Gishas 2018-09-30 07:32:44

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>

-1
répondu Abhijit Patra 2018-08-30 15:28:11