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.