SOLVED: java.lang.ClassNotFoundException: com.sun.jersey.spi.container.servlet.ServletContainer

If you have start working on Jersey then you might face this issue while configuring it. This is the result of insufficient project dependencies on runtime. This issue is likely to be faced in tomcat server.

Random exceptions

Random exceptions

The error log will look like this.

SEVERE: Servlet /JerseyHelloWorld threw load() exception
java.lang.ClassNotFoundException: com.sun.jersey.spi.container.servlet.ServletContainer
	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1713)
	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1558)
	at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:527)
	at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:509)
	at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:137)
	at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1144)
	at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1088)
	at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5033)
	at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5317)
	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(Unknown Source)
	at java.util.concurrent.FutureTask.run(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)

To solve this issue, correct the project dependencies in pom.xml like below. If you are not using maven for project dependencies, include the corresponding jar files in classpath.

 <dependency>
	<groupId>com.sun.jersey</groupId>
	<artifactId>jersey-server</artifactId>
	<version>1.17.1</version>
</dependency>
<dependency>
	<groupId>com.sun.jersey</groupId>
	<artifactId>jersey-core</artifactId>
	<version>1.17.1</version>
</dependency>
<dependency>
	<groupId>com.sun.jersey</groupId>
	<artifactId>jersey-servlet</artifactId>
	<version>1.17.1</version>
</dependency>

This will solve the issue.

Happy Learning !!

Lokesh

I have 7 Years of rich experience in java technology. This has only increased my hunger to learn more. In this blog, i will be writing on different topics occasionally, and would love to engage in some meaningful serious discussions with you folks.

You may also like...

9 Responses

  1. PNR says:

    This is really very helpful. It solved my errors. I’ve also started reading your other articles. They are very simple and straight forward.

    Thanks again!!!!

  2. steve says:

    It still doesnt work for me, same problem as before

  3. Pop says:

    It doesn’t solve the issue for me :(
    I tried everything I found on the internet, but it’s like none of them actually does anything.
    I still have tons of errors like:
    java.lang.ClassNotFoundException: com.sun.jersey.spi.container.servlet.ServletContainer

      • Pop says:

        Thank you, Lokesh! I solved the problem in the meanwhile and I wanted to post it here for everyone. In my case, all I had to do (and it’s kinda funny) is restart my computer. Why? I’m guessing this could be a Netbeans bug – maybe it doesn’t close Tomcat even when you press stop? The point is, I added the dependencies like in your post and it still didn’t work, even after stopping and starting again both my web service and Tomcat. Then, the next day, without doing anything else but restarting my computer, everything was working well.

        • Lokesh Gupta says:

          Really weird, but thank you for updating your fix here. It might be helpful for other’s working on netbeans. [I am wondering if others facing similar issue would have to wait till next day to restart the computer.. :) just kidding.]

  4. mdrobins says:

    YES thank you Lokesh

  5. chris says:

    Wow. Thanks a million. All the tutorials have older versions of jersey and none of them told me to use jersey-servlet. I fought with this for HOURS. thanks,

Note:- In comment box, please put your code inside [java] ... [/java] OR [xml] ... [/xml] tags otherwise it may not appear/post as intended.


Want to ask any question? Or suggest anything?