Handler dispatch failed; nested exception is java.lang.NoSuchMethodError

Viewed 4989

Message

Handler dispatch failed; nested exception is java.lang.NoSuchMethodError: 'javax.servlet.http.HttpServletMapping javax.servlet.http.HttpServletRequest.getHttpServletMapping()'

Description

The server encountered an unexpected condition that prevented it from fulfilling the request.

Exception

org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.NoSuchMethodError: 'javax.servlet.http.HttpServletMapping javax.servlet.http.HttpServletRequest.getHttpServletMapping()'
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1076)
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:961)
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:626)
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

Root Cause

java.lang.NoSuchMethodError: 'javax.servlet.http.HttpServletMapping javax.servlet.http.HttpServletRequest.getHttpServletMapping()'
    org.springframework.web.util.UrlPathHelper.skipServletPathDetermination(UrlPathHelper.java:265)
    org.springframework.web.util.UrlPathHelper.getLookupPathForRequest(UrlPathHelper.java:250)
    org.springframework.web.util.UrlPathHelper.resolveAndCacheLookupPath(UrlPathHelper.java:199)
    org.springframework.web.servlet.handler.AbstractHandlerMapping.initLookupPath(AbstractHandlerMapping.java:567)
    org.springframework.web.servlet.handler.AbstractUrlHandlerMapping.getHandlerInternal(AbstractUrlHandlerMapping.java:136)
    org.springframework.web.servlet.handler.AbstractHandlerMapping.getHandler(AbstractHandlerMapping.java:491)
    org.springframework.web.servlet.DispatcherServlet.getHandler(DispatcherServlet.java:1255)
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1037)
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:961)
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:626)
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.example</groupId>
    <artifactId>mvc-1</artifactId>
    <version>1.0-SNAPSHOT</version>
    <name>mvc-1</name>

    <properties>
        <maven.compiler.target>1.8</maven.compiler.target>
        <maven.compiler.source>1.8</maven.compiler.source>
        <junit.version>5.6.2</junit.version>
    </properties>

    <dependencies>

        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-api</artifactId>
            <version>${junit.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-engine</artifactId>
            <version>${junit.version}</version>
            <scope>test</scope>
        </dependency>
        
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>4.0.0</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.3.0</version>
            <scope>compile</scope>
        </dependency>


    </dependencies>

    <build>
        <plugins>
        </plugins>
    </build>
</project>

CODE

General structure

WEB-INF Access

2 Answers

Can you please try to downgrade javax.servlet-api to 3.1.0 and see if that solves your problem? That seems to have solved our issue.

You should upgrade the runtime environment. In your current runtime version of Java EE javax.servlet.http.HttpServletRequest does not contain a method with the name getHttpServletMapping. Java EE 8 Introduce the method getHttpServletMapping.Or make sure that you are using the same version for development and runtime. References: JAVA EE github docsApache Tomcat docs

Related