Ujjwal Mishra
Ujjwal Mishra

Reputation: 31

java.lang.NoSuchMethodError: 'void org.glassfish.jersey.model.internal.CommonConfig.<init>(jakarta.ws.rs.RuntimeType, java.util.function.Predicate)'

I'm developing a RESTful web application using Jersey and deploying it on Tomcat 10. My application is hosted at http://localhost:8080/jrapi/. However, when I click on a link that should call the endpoint webapi/myresource, I get a 500 Internal Server Error with the following details:

Error Message

HTTP Status 500 – Internal Server Error
jakarta.servlet.ServletException: Servlet.init() for servlet [jersey-servlet] threw exception

Root Cause:
java.lang.NoSuchMethodError: 'void org.glassfish.jersey.model.internal.CommonConfig.<init>(jakarta.ws.rs.RuntimeType, java.util.function.Predicate)'

pom.xml

<dependencies>
    <dependency>
        <groupId>org.glassfish.jersey.core</groupId>
        <artifactId>jersey-common</artifactId>
        <version>2.26-b03</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jersey.core</groupId>
        <artifactId>jersey-server</artifactId>
        <version>3.1.1</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jersey.containers</groupId>
        <artifactId>jersey-container-servlet</artifactId>
        <version>3.1.1</version>
    </dependency>
    <dependency>
        <groupId>jakarta.servlet</groupId>
        <artifactId>jakarta.servlet-api</artifactId>
        <version>5.0.0</version>
        <scope>provided</scope>
    </dependency>
</dependencies>

web.xml

<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee
                             https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd"
         version="5.0">
    <servlet>
        <servlet-name>jersey-servlet</servlet-name>
        <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
        <init-param>
            <param-name>jersey.config.server.provider.packages</param-name>
            <param-value>mishra_infotech</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>jersey-servlet</servlet-name>
        <url-pattern>/webapi/*</url-pattern>
    </servlet-mapping>
</web-app>

Endpoint Code(App.java)

package mishra_infotech;

import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.core.MediaType;

@Path("webapi/myresource")
public class App {
    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String getIt() {
        return "Ho gya finally!";
    }
}


Upvotes: 0

Views: 30

Answers (0)

Related Questions