java.lang.NoClassDefFoundError: org/springframework/web/util/UriTemplateHandler

I'm new to Springboot and would like to have a sample project running.

I'm getting the following error upon execution in Intellij: java.lang.NoClassDefFoundError: org/springframework/web/util/UriTemplateHandler

POM is: https://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 org.springframework.boot spring-boot-starter-parent 2.2.2.RELEASE com.example demo 0.0.1-SNAPSHOT demo Demo project for Spring Boot

<properties>
    <java.version>1.8</java.version>
</properties>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <scope>runtime</scope>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
        <exclusions>
            <exclusion>
                <groupId>org.junit.vintage</groupId>
                <artifactId>junit-vintage-engine</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>4.1.6.RELEASE</version>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

Controller code is:

package com.example.demo;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;


public class HelloController {

    @Controller
    @RequestMapping(value = "/test")
    public class TestController {
        @RequestMapping (value="map")
        public String getMeSomething()
        {
            return "Got this from Srini!";
        }
    }
}

DemoApplication is:

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

Thoughts ?

Upvotes: 3

Views: 16780

Answers (3)

Ricardo Costa
Ricardo Costa

Reputation: 163

You need to add the spring web dependency to your pom file:

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
</dependency>

Upvotes: 3

Mauricio
Mauricio

Reputation: 226

I believe the class UriTemplateHandler is not present in your dependency versión of spring

<dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>4.1.6.RELEASE</version>
</dependency>

According to https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/util/UriTemplateHandler.html, it's present since the version 4.2. Maybe upgrading the versión to 4.2 will solve your problem? (after downloading dependencies ofc).

Upvotes: 2

Karim SNOUSSI
Karim SNOUSSI

Reputation: 109

Remove the version of spring-web dependency

Each release of Spring Boot provides a curated list of dependencies that it supports. In practice, you do not need to provide a version for any of these dependencies in your build configuration, as Spring Boot manages that for you. When you upgrade Spring Boot itself, these dependencies are upgraded as well in a consistent way.

See more

Upvotes: 3

Related Questions