'Error instantiating servlet class org.glassfish.jersey.servlet.ServletContainer
Hi Trying to write a simple rest webservice. And following the tutorial below: http://www.tutorialspoint.com/restful/index.htm
But i am getting HTTP Status 500 - Error instantiating servlet class org.glassfish.jersey.servlet.ServletContainer
Exception:
<body>
<h1>HTTP Status 500 - Error instantiating servlet class org.glassfish.jersey.servlet.ServletContainer</h1>
<div class="line"></div>
<p>
<b>type</b> Exception report
</p>
<p>
<b>message</b>
<u>Error instantiating servlet class org.glassfish.jersey.servlet.ServletContainer</u>
</p>
<p>
<b>description</b>
<u>The server encountered an internal error that prevented it from fulfilling this request.</u>
</p>
<p>
<b>exception</b>
</p>
<pre>javax.servlet.ServletException: Error instantiating servlet class org.glassfish.jersey.servlet.ServletContainer
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:522)
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1095)
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:672)
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500)
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
java.lang.Thread.run(Thread.java:745)
</pre>
<p>
<b>root cause</b>
</p>
<pre>java.lang.ClassNotFoundException: org.glassfish.jersey.servlet.ServletContainer
org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1308)
org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1142)
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
Following is the code (Which is mostly same as the tutorial)
package com.abhi;
import java.util.List;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
@Path("/UserService")
public class UserService {
UserDao userDao = new UserDao();
@GET
@Path("/users")
@Produces(MediaType.APPLICATION_XML)
public List<User> getUsers(){
return userDao.getAllUsers();
}
}
My 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"
version="3.0">
<display-name>MyRestPrjct</display-name>
<servlet>
<servlet-name>Jersey RESTful Application</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>com.abhi</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>Jersey RESTful Application</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
<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>
</web-app>
Solution 1:[1]
I was just not placing the jars in proper way. Instead of placing the required jar in webapps\MyRestPrjct\WEB-INF\lib
, I was placing it in webapps\MyRestPrjct\WEB-INF\lib\libs
.
It is working fine after I the moved the jars from libs
to lib
.
Solution 2:[2]
Placing all the jars in WEB-INF/lib folder resolved the issue for me.
Solution 3:[3]
i too faced similar issue when i did the same tutorial, the problem i found out was the servelt class specified in the web.xml is
org.glassfish.jersey.servlet.ServletContainer
but when i checked in the jars there is no package in the libraries with the above path so i change it to the existing one
com.sun.jersey.spi.container.servlet.ServletContainer
and it solved the issue.
Solution 4:[4]
I too got the same exception when trying to run the same module from tutorialspoint. All I did is to download the below jars and added to project. It worked fine.jersey-common-2.0-m03.jar
jersey-server-2.0-m03.jar
jersey-container-servlet-core-2.28.jar
Solution 5:[5]
In my case worked by adding maven dependencies in deployment assembly.(For Maven Project*)
Right click project name (in eclipse) > configure build path > Deployment Assembly (in Left bar) > Add > java build Path Entries > Maven Dependencies > Finish
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | |
Solution 2 | PrajD |
Solution 3 | raj240 |
Solution 4 | mannedear |
Solution 5 | Naveen Kumar |