简体   繁体   中英

Spring Boot Controller not mapping (Whitelabel Error Page)

I have a Spring REST project that is redirecting all requests to error page, even if they are mapped in the controller.

I reduced the code to the smallest possible version that produces the error:

Here is the project structure:

在此处输入图像描述

Here is the Application class (The imports are removed to make the thread easier to read):

package com.example.demo;

@Controller
@SpringBootApplication
public class TestApplication {


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


    @GetMapping("/greeting")
    @ResponseBody
    public String greeting() {
        return "greeting";
    }

}

Originally I hade a sperate controller from the App class, but moved the controller code to the app class to make sure that this is not a project structure problem Here is the controller code (Tried with and without it, and received the same error):

@Controller
@SpringBootApplication
public class TestApplication {


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


    @GetMapping("/hello")
    @ResponseBody
    public String greeting() {
        return "greeting";
    }

}

(Both http://localhost:8080/greeting as well as well http://localhost:8080/hello return the same error page)

Dependencies and plugins from the pom file:

        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-tomcat</artifactId>
            </dependency>
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
    

(Tried with and without tomcat as dependency and nothing changed)

And lastly here is the error message I receive in the browser when I visit the links (http://localhost:8080/greeting and http://localhost:8080/hello):

Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.

Sun Nov 27 00:16:08 CET 2022
There was an unexpected error (type=Not Found, status=404).

Edit: After setting debug to true in project.properties, here is the error message I see in console (Worth mentioning that the project ran with no issues when I tried it on another system (Same OS)):

 GET "/greeting", parameters={}
 Mapped to ResourceHttpRequestHandler [classpath [META-INF/resources/], classpath [resources/], classpath [static/], classpath [public/], ServletContext [/]]
 Resource not found
 Completed 404 NOT_FOUND
 "ERROR" dispatch for GET "/error", parameters={}

(Timestamps are removed to make reading easier)

Did you tried making call to the endpoint via postman? If so, can you try again after removing @ResponseBody annotation.

Instead of @Controller use @RestController

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM