2014-05-04 50 views
0

我正在学习一个创建RESTful java web服务的教程。我在创建GET服务测试方法的时候,但是当我尝试调用它时,我得到以下异常:资源配置错误java REST项目

“SEVERE:StandardWrapper.Throwable com.sun.jersey.api.container.ContainerException :ResourceConfig实例不包含任何根资源类“

我GOOGLE了这个错误消息,并阅读其他帖子,但似乎无法从我读到的工作解决方案。我的web.xml看起来像这样。

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

我的源代码类看起来是这样的:

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>"; 
    } 

} 

我的项目结构如下:

enter image description here

完整的堆栈错误:(当我启动服务器,就会出现此,但它仍然会成功启动,并且在尝试导航到页面以执行上述源代码中的方法时,我会看到此错误)。

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 

任何帮助将不胜感激,谢谢。

+1

你介意添加所有堆栈错误吗? –

+0

已添加堆栈错误 – zic10

回答

1

您的设置看起来不错。但是,我感到震惊的是,你的班级有默认访问权限。尝试公开:

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