Java – no idea why: the resourceconfig instance does not contain any root resource classes
I'm new clothes and web services, and I'm trying to run a simple restful web service I follow http://www.mkyong.com/webservices/jax-rs/jersey-hello-world-example/ , but my project doesn't use Maven. I downloaded Jersey 1.17. 1. Jar and include it in my project path
When I want to call the service on http: / / localhost: 8080 / sycotext / rest / service / sometext, I receive this error:
HTTP Status 500 - Servlet.init() for servlet sycoText-servlet threw exception
This is a stack trace:
javax.servlet.ServletException: Servlet.init() for servlet sycoText-servlet threw exception org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:504) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:76) org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:934) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:515) org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1010) org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:640) org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:223) org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1618) org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1576) java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) java.lang.Thread.run(Thread.java:724) root cause com.sun.jersey.api.container.ContainerException: The ResourceConfig instance does not contain any root resource classes. com.sun.jersey.server.impl.application.RootResourceUriRules.<init>(RootResourceUriRules.java:99) com.sun.jersey.server.impl.application.WebApplicationImpl._initiate(WebApplicationImpl.java:1331) com.sun.jersey.server.impl.application.WebApplicationImpl.access$700(WebApplicationImpl.java:168) com.sun.jersey.server.impl.application.WebApplicationImpl$13.f(WebApplicationImpl.java:774) com.sun.jersey.server.impl.application.WebApplicationImpl$13.f(WebApplicationImpl.java:770) com.sun.jersey.spi.inject.Errors.processWithErrors(Errors.java:193) com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:770) com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:765) com.sun.jersey.spi.container.servlet.ServletContainer.initiate(ServletContainer.java:489) com.sun.jersey.spi.container.servlet.ServletContainer$InternalWebComponent.initiate(ServletContainer.java:319) com.sun.jersey.spi.container.servlet.WebComponent.load(WebComponent.java:605) com.sun.jersey.spi.container.servlet.WebComponent.init(WebComponent.java:210) com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:374) com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:557) javax.servlet.GenericServlet.init(GenericServlet.java:160) org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:504) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:76) org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:934) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:515) org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1010) org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:640) org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:223) org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1618) org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1576) java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) java.lang.Thread.run(Thread.java:724)
Hear is my code:
package ir.sycotech.text.server.service; import javax.ws.rs.*; import javax.ws.rs.core.Response; @Path("/service") public class SycoTextService { @GET @Path("/{param}") public Response getMsg(@PathParam("param") String msg) { String output = "Jersey say : " + msg; return Response.status(200).entity(output).build(); }
This is my web xml:
<?xml version="1.0" encoding="UTF-8"?> <web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <display-name>Restful Web Application</display-name> <servlet> <servlet-name>sycoText-servlet</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>ir.sycotech.text.server.service</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>sycoText-servlet</servlet-name> <url-pattern>/rest/*</url-pattern> </servlet-mapping> </web-app>
I'm already on the web My packagename is specified in the XML file. I don't know why I have this error. I will be very grateful if someone knows what the problem is
Solution
Error:
It means that the service class cannot be found in Jersey This may be due to com sun. jersey. config. property. The packages parameter is caused by the wrong named package, or whether the package name is correct but does not contain the resource class (people sometimes forget to add the @ path annotation to the class)
However, my settings cannot find any errors So this should work!
Check that your application is deployed correctly and that your web - inf / classes folder actually contains the correct folder path for your class and the package
Do a complete cleaning and reconstruction, and then try again