2014-05-04 4 views
0

Je suis un tutoriel pour créer un service web Java RESTful. Je suis au point où j'ai une méthode de test de service GET créé, mais lorsque je tente de l'appeler, je reçois l'exception:Erreur de configuration de ressource java Projet REST

« GRAVES: StandardWrapper.Throwable com.sun.jersey.api.container.ContainerException : L'instance ResourceConfig ne contient aucune classe de ressources racine "

J'ai recherché sur ce message d'erreur et lu d'autres messages, mais je n'ai pas pu trouver une solution de travail à partir de ce que j'ai lu. Mon web.xml ressemble à ceci.

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> 
    <display-name>com.zcservices.rest</display-name> 
    <welcome-file-list> 
    <welcome-file>index.html</welcome-file> 
    <welcome-file>index.htm</welcome-file> 
    <welcome-file>index.jsp</welcome-file> 
    <welcome-file>default.html</welcome-file> 
    <welcome-file>default.htm</welcome-file> 
    <welcome-file>default.jsp</welcome-file> 
    </welcome-file-list> 

    <servlet> 
    <servlet-name>Jersey REST Service</servlet-name> 
    <servlet-class> 
     com.sun.jersey.spi.container.servlet.ServletContainer 
    </servlet-class> 
    <init-param> 
     <param-name>com.sun.jersey.config.property.packages</param-name> 
     <param-value>com.zcservices.rest</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
</servlet> 
    <servlet-mapping> 
     <servlet-name>Jersey REST Service</servlet-name> 
     <url-pattern>/api/*</url-pattern> 
    </servlet-mapping> 


</web-app> 

Ma classe de code source ressemble à ceci:

package com.zcservices.rest.status; 

import javax.ws.rs.*; 
import javax.ws.rs.core.MediaType; 

@Path("/v1/status") 
class V1_status 
{ 
    @GET 
    @Produces(MediaType.TEXT_HTML) 
    public String returnTitle() 
    { 
     return "<p>The webservice is operational</p>"; 
    } 

} 

Ma structure de projet ressemble à ceci:

enter image description here

pleine pile Erreur: (Cela se produit lorsque je lance le serveur , pourtant il démarrera toujours avec succès et je verrai cette erreur en essayant de naviguer à la page pour exercer la méthode dans le code source ci-dessus).

EVERE: StandardWrapper.Throwable 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:99) 
at com.sun.jersey.server.impl.application.WebApplicationImpl._initiate(WebApplicationImpl.java:1359) 
at com.sun.jersey.server.impl.application.WebApplicationImpl.access$700(WebApplicationImpl.java:180) 
at com.sun.jersey.server.impl.application.WebApplicationImpl$13.f(WebApplicationImpl.java:799) 
at com.sun.jersey.server.impl.application.WebApplicationImpl$13.f(WebApplicationImpl.java:795) 
at com.sun.jersey.spi.inject.Errors.processWithErrors(Errors.java:193) 
at com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:795) 
at com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:790) 
at com.sun.jersey.spi.container.servlet.ServletContainer.initiate(ServletContainer.java:491) 
at com.sun.jersey.spi.container.servlet.ServletContainer$InternalWebComponent.initiate(ServletContainer.java:321) 
at com.sun.jersey.spi.container.servlet.WebComponent.load(WebComponent.java:605) 
at com.sun.jersey.spi.container.servlet.WebComponent.init(WebComponent.java:207) 
at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:376) 
at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:559) 
at javax.servlet.GenericServlet.init(GenericServlet.java:158) 
at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1284) 
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1197) 
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1087) 
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5210) 
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5493) 
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559) 
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549) 
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) 
at java.util.concurrent.FutureTask.run(FutureTask.java:138) 
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918) 
at java.lang.Thread.run(Thread.java:695) 
May 3, 2014 9:00:58 PM org.apache.catalina.core.StandardContext loadOnStartup 

Toute aide serait appréciée, merci.

+1

Voulez-vous ajouter l'erreur de pile? –

+0

erreur de pile ajoutée – zic10

Répondre

1

Votre configuration semble correcte. Ce qui me frappe, c'est que votre classe a un accès par défaut. Essayez de le rendre public:

@Path("/v1/status") 
public class V1_status 
Questions connexes