The ResourceConfig instance does not contain any root resource classes

JavaJersey

Java Problem Overview


What's going wrong here?

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.access$600(WebApplicationImpl.java:161)
        at com.sun.jersey.server.impl.application.WebApplicationImpl$12.f(WebApplicationImpl.java:698)
        at com.sun.jersey.server.impl.application.WebApplicationImpl$12.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)

Filter:

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

Java Solutions


Solution 1 - Java

Have you tried adding

<init-param>
  <param-name>com.sun.jersey.config.property.packages</param-name>
  <param-value>my.package.name</param-value>
</init-param>

to your SpringServlet definition? Obviously replace my.package.name with the package that AdminUiResource is in and make sure it is in the classpath.

Solution 2 - Java

I am new to Jersey - I had the same issue, But when I removed the "/" and just used the @path("admin") it worked.

@Path("admin")
public class AdminUiResource { ... }

Solution 3 - Java

YOU NEED TO ADD YOUR PACKAGE NAME AT

<init-param>
  <param-name>com.sun.jersey.config.property.packages</param-name>
  <param-value>your.package.name</param-value>
</init-param>

> ALSO ONE SILLY THING I HAVE NOTICED,
I Need to refresh my project after MAVEN BUILD else it show me same error.
Please comment If you know reason why we need to refresh project?

Solution 4 - Java

This means, it couldn't find any class which can be executed as jersey RESTful web service.

Check:

  • Whether 'com.sun.jersey.config.property.packages' is missing in your web.xml.
  • Whether value for 'com.sun.jersey.config.property.packages' param is missing or invalid (the mentioned package doesn't exists). It should be a package where you have put your POJO classes which runs as jersey services.
  • Whether there exists at least one POJO class, which has a method annotated with @Path attribute.

Solution 5 - Java

Your resource package should contain at least one pojo which is either annotated with @Path or have at least one method annotated with @Path or a request method designator, such as @GET, @PUT, @POST, or @DELETE. Resource methods are methods of a resource class annotated with a request method designator. This resolved my issue...

Solution 6 - Java

I ran across this problem with JBOSS EAP 6.1. I was able to deploy my code through eclipse to the JBOSS server but once I attempted to deploy the file as a WAR file to JBOSS I started getting this error.

The solution was configuring the web.xml to work properly with JBOSS by allowing the two to work together.

The following two lines were commented out in web.xml to allow JBOSS to do it's own configurations

<!--  
    <init-param>
    <param-name>com.sun.jersey.config.property.packages</param-name>
    <param-value>com.your.package</param-value>
</init-param> -->

And then add the following context params after

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

Solution 7 - Java

Basically I corrected it like below and everything worked fine.

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

Solution 8 - Java

I am getting this exception, because of a missing ResourseConfig in Web.xml.

Add:

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

Service class means: class which contains services like: @Path("/orders")

Solution 9 - Java

I had the same issue with trying to run the webapp from an eclipse project. As soon I copied the .class files to /WEB-INF/classes it worked perfectly.

Solution 10 - Java

I had the same issue, testing a bunch of different examples, and tried all the possible solutions. What finally got it working for me was when I added a @Path("") over the class line, I had left that out.

Solution 11 - Java

Had the same issue and found out it was a problem with the way I deployed my source code. As the error message says: "...does not contain any root resource classes". So it couldn't find any resource classes in the configured package. I just deployed the classes wrong - that's why it didn't pick it up.

I forgot to deploy my class files in the /WEB-INF/classes directory of the WAR - initially I just had it directly in the root of the WAR file. So when it looked for resource classes it didn't find them - because they existed in a different (wrong) location.

Solution 12 - Java

Same issue - web.xml looked like this:

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

Providing a custom application overrides any XML configured auto detection of classes. You need to implement the right methods to write your own code to wire up the classes. See the javadocs.

Solution 13 - Java

Another possible cause of this error is that you have forgotten to add the libraries that are already in the /WEBINF/lib folder to the build path (e.g. when importing a .war-file and not checking the libraries when asked in the wizard). Just happened to me.

Solution 14 - Java

It happened to me when I deployed my main.jar, without checking the add directory entries box in the export jar menu in Eclipse.

Solution 15 - Java

Well, it's a little late to reply. I have faced the same problem and my Google searches were in vain. However, I managed to find what the problem was. There might be many reasons for getting this error but I got the error due to the following and I wanted to share this with my fellow developers.

  1. I previously used Jersey 1.3 and I was getting this error. But when I upgraded the jars to the latest version of Jersey, this issue was resolved.
  2. Another instance in which I got this error was when I was trying to deploy my service into JBoss by building a war file. I made the mistake of including the Java files in the .war instead of java classes.

Solution 16 - Java

I had to add a trailing forward slash to the end of @path

@Path ("/admin/") 

Solution 17 - Java

Ok... For me work fine just only assigning the "servlet-class" to com.sum.jersey.spi.container.servlet.ServletContainer, I am using 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>

but for some reason I had to reboot my computer in order to work in my localhost. If still not work? You have to add in your web.xml this code in between "servlet" tag.

<init-param>
  <param-name>com.sun.jersey.config.property.packages</param-name>
  <param-value>the.package.name</param-value>
</init-param>

"the.package.name" is the package name where you have your classes. If you are using IDE, refresh the project and run again in Tomcat. still not work? reboot your computer and will work.

Solution 18 - Java

Another thing to check is a combination of previous entries

You can have in your web.xml file this:

<init-param>
        <param-name>com.sun.jersey.config.property.packages</param-name>
        <param-value>com.acme.rest</param-value>
</init-param>

and you can have

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

but you cannot have both or you get this sort of error. The fix in this case would be to comment out one or the other (probably the first code snippet would be commented out)

Solution 19 - Java

yes adding the init param for com.sun.jersey.config.property.packages fixed this issue for me.

was merging a jersey rest services into maven based spring application and got this error.

Solution 20 - Java

I also got this kind of error, please take care of the configurations in xml.

I wrote com.sun.jersey.comfig.property.packages

Instead of com.sun.jersey.config.property.packages

After correction it's working.

Solution 21 - Java

that issue is because jersey can't find a dependecy package for your rest service declarated

check your project package distribution and assert that is equals to your web.xml param value

Solution 22 - Java

Probably too late but this is how I resolved this error.

If this solution is not working,

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

In eclipse:

RightClick on your Project Or Select Project and press Alt + Enter On the left-hand side of the opened window find Java Build Path

Select Libraries from the right tab panel: If there is anything which is corrupted or showing cross mark on top of the jars, remove and add the same jar again

Apply and Close

Rebuild your project

Solution 23 - Java

In my case I have added the jars twice in build path after importing from war. It worked fine after removing the extra jars which was showing error deployment descriptor error pages

adding

<init-param>
		  <param-name>com.sun.jersey.config.property.packages</param-name>
		  <param-value>service.package.name</param-value>
</init-param>

Solution 24 - Java

Also came accross this problem, twice for different reasons. The first time I forgot to include

<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>my.package.name</param-value>
</init-param>

as described in previous comments, and once I did that, it started working.

Yet... another day I started Eclipse, expecting to continue where I left off, and instead of having my program working, it showed the very same error once again. I started checking if I accidentally had made some changes and saved corrupted file, but could find no such error and the file looked exactly like examples I have, all in order. Since it worked the day before, after some initial searching, I thought, well, maybe it's a Eclipse, or Tomcat glitch or something, so let's just try to make some changes and see if it reacts. So, I did a space + backspace in web.xml file, just to fool Eclipse that the file is changed, and saved it then. The next step was restarting Tomcat server (from Eclipse IDE) and voila, it works again!

Maybe someone with broader experience could explain what the problem really was behind all of this?

Solution 25 - Java

Main cause of this Exception is:

You have not given the proper package name where you using the @Path or forgot to configure in web.xml / Configuration file(Rest API Class File package Name, Your Class Package Name)

Check this Configuration inside <init-param>

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestioncmaniView Question on Stackoverflow
Solution 1 - JavaMikeView Answer on Stackoverflow
Solution 2 - JavaAnver SadhatView Answer on Stackoverflow
Solution 3 - JavaVeKeView Answer on Stackoverflow
Solution 4 - JavaPawanView Answer on Stackoverflow
Solution 5 - JavahakishView Answer on Stackoverflow
Solution 6 - JavaAntman06View Answer on Stackoverflow
Solution 7 - JavacmaniView Answer on Stackoverflow
Solution 8 - JavaTechSunilView Answer on Stackoverflow
Solution 9 - JavaRodrigo AsensioView Answer on Stackoverflow
Solution 10 - JavaHolstadiusView Answer on Stackoverflow
Solution 11 - JavaNS du ToitView Answer on Stackoverflow
Solution 12 - JavaDustin GetzView Answer on Stackoverflow
Solution 13 - JavabmurauerView Answer on Stackoverflow
Solution 14 - JavaserjView Answer on Stackoverflow
Solution 15 - JavaNikhilView Answer on Stackoverflow
Solution 16 - JavaMobileMonView Answer on Stackoverflow
Solution 17 - Javauser3945851View Answer on Stackoverflow
Solution 18 - JavademongolemView Answer on Stackoverflow
Solution 19 - JavaHarinathView Answer on Stackoverflow
Solution 20 - JavaRavi ThapaView Answer on Stackoverflow
Solution 21 - JavaJose Luis GarciaView Answer on Stackoverflow
Solution 22 - JavaSufiyan AnsariView Answer on Stackoverflow
Solution 23 - JavaHemaView Answer on Stackoverflow
Solution 24 - JavaGishasView Answer on Stackoverflow
Solution 25 - JavaAbhijit PatraView Answer on Stackoverflow