HTTP Status 500 - Servlet.init() for servlet jersey-serlvet threw exception?

40,002

Solution 1

That error means you are mixing Jersey 1.x and 2.x. Both are totally incompatible, make sure that all your dependencies are of the same version.

com.sun.jersey

is for Jersey 1.x. It should not be used.

org.glassfish.jersey

is Jersey 2.x and should be used whenever possible.

Solution 2

I see one issue in your code

@Path("/") <--- here
public class Cliente {

    @GET
    @Path("/cliente")

As per your code, the url to access getNome method would be

http://localhost:8080/FerpaWS/ws//cliente

But, you are accessing

 http://localhost:8080/FerpaWS/ws/cliente

So, either you removed @Path("/") or name something @Path("/app"). So, finally url would be

http://localhost:8080/FerpaWS/ws/app/cliente
Share:
40,002
FernandoPaiva
Author by

FernandoPaiva

I'm from Brazil

Updated on July 09, 2022

Comments

  • FernandoPaiva
    FernandoPaiva almost 2 years

    I'm trying create a Web Service RESTFUL using Jersey with Maven and Tomcat. When I do execute my webservice, does throws some exceptions and doesn't works.

    How could I solve it ?

    URL

    http://localhost:8080/FerpaWS/ws/cliente

    Service

    package br.com.ferpa.ws;
    
    import javax.ws.rs.Consumes;
    import javax.ws.rs.GET;
    import javax.ws.rs.Path;
    import javax.ws.rs.core.MediaType;
    import javax.ws.rs.core.Response;
    import org.json.JSONObject;
    
    @Path("/")
    public class Cliente {
    
        @GET
        @Path("/cliente")
        @Consumes(MediaType.APPLICATION_JSON)
        public Response getNome(){
           JSONObject obj = new JSONObject();
           obj.put("nome", "fernando paiva");
           return Response.status(200).entity(obj.toString()).build();
        }    
    }
    

    web.xml

    <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">
    
        <display-name>FerpaWS</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-serlvet</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>br.com.ferpa.ws</param-value>
            </init-param>
            <load-on-startup>1</load-on-startup>
        </servlet>
    
        <servlet-mapping>
            <servlet-name>jersey-serlvet</servlet-name>
            <url-pattern>/ws/*</url-pattern>
        </servlet-mapping>
    </web-app>
    

    pom.xml

    <dependencies>
            <dependency>
                <groupId>javax</groupId>
                <artifactId>javaee-web-api</artifactId>
                <version>7.0</version>
                <scope>provided</scope>
            </dependency>
    
            <!-- WS -->
            <dependency>
                <groupId>asm</groupId>
                <artifactId>asm</artifactId>
                <version>3.3.1</version>
            </dependency>
    
            <dependency>
                <groupId>com.sun.jersey</groupId>
                <artifactId>jersey-core</artifactId>
                <version>1.19</version>
            </dependency>
    
            <dependency>
                <groupId>com.sun.jersey</groupId>
                <artifactId>jersey-server</artifactId>
                <version>1.19</version>
            </dependency>
    
            <dependency>
                <groupId>javax.ws.rs</groupId>
                <artifactId>jsr311-api</artifactId>
                <version>1.1.1</version>
            </dependency>
    
            <dependency>
                <groupId>com.sun.jersey</groupId>
                <artifactId>jersey-json</artifactId>
                <version>1.19</version>
            </dependency>
    
            <dependency>
                <groupId>com.sun.jersey</groupId>
                <artifactId>jersey-bundle</artifactId>
                <version>1.14</version>
            </dependency>
    
            <dependency>
                <groupId>org.json</groupId>
                <artifactId>json</artifactId>
                <version>20141113</version>
            </dependency>
    
            <dependency>
                <groupId>org.glassfish</groupId>
                <artifactId>javax.json</artifactId>
                <version>1.0.4</version>
            </dependency>
    
            <dependency>
                <groupId>com.googlecode.json-simple</groupId>
                <artifactId>json-simple</artifactId>
                <version>1.1</version>
            </dependency>
    
            <dependency>
                <groupId>com.sun.jersey.contribs</groupId>
                <artifactId>jersey-multipart</artifactId>
                <version>1.8</version>
            </dependency>
    
        </dependencies>
    

    Exception

    exception
    
    javax.servlet.ServletException: Servlet.init() for servlet jersey-serlvet threw exception
        org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
        org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
        org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610)
        org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:516)
        org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1086)
        org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:659)
        org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:223)
        org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1558)
        org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1515)
        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)
    root cause
    
    java.lang.IllegalAccessError: tried to access method com.sun.jersey.core.reflection.ReflectionHelper.getContextClassLoader()Ljava/lang/ClassLoader; from class com.sun.jersey.spi.scanning.AnnotationScannerListener
        com.sun.jersey.spi.scanning.AnnotationScannerListener.<init>(AnnotationScannerListener.java:92)
        com.sun.jersey.spi.scanning.PathProviderScannerListener.<init>(PathProviderScannerListener.java:59)
        com.sun.jersey.api.core.ScanningResourceConfig.init(ScanningResourceConfig.java:79)
        com.sun.jersey.api.core.PackagesResourceConfig.init(PackagesResourceConfig.java:104)
        com.sun.jersey.api.core.PackagesResourceConfig.<init>(PackagesResourceConfig.java:78)
        com.sun.jersey.api.core.PackagesResourceConfig.<init>(PackagesResourceConfig.java:89)
        com.sun.jersey.spi.container.servlet.WebComponent.createResourceConfig(WebComponent.java:700)
        com.sun.jersey.spi.container.servlet.WebComponent.createResourceConfig(WebComponent.java:678)
        com.sun.jersey.spi.container.servlet.WebComponent.init(WebComponent.java:203)
        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:158)
        org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
        org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
        org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610)
        org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:516)
        org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1086)
        org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:659)
        org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:223)
        org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1558)
        org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1515)
        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)