Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Spring-Boot MVC Template Not Loading (404 Not Found)

I have an extremely simple Spring-Boot MVC application here that is not working. One Controller with one page not loading and receiving a 404 not found.

I put a System.out.println("Home Page") statement in the controller method and validated that it is mapped and getting fired correctly but the template isn't loading.

The error:

Whitelabel Error Page  This application has no explicit mapping for /error, so you are seeing this as a fallback.  Thu Nov 06 23:43:51 EST 2014 There was an unexpected error (type=Not Found, status=404). 

The folder structure:

src/main/java  +-Application.java  +-WebController.java  src/main/resources  +-templates    +-index.html 

Abbreviated console output:

Server initialized with port: 8080 Starting service Tomcat Starting Servlet Engine: Apache Tomcat/7.0.55 Initializing Spring embedded WebApplicationContext Root WebApplicationContext: initialization completed in 1947 ms Mapping servlet: 'dispatcherServlet' to [/] Mapping filter: 'hiddenHttpMethodFilter' to: [/*] Mapped "{[/],methods=[],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.String app.WebController.index() Tomcat started on port(s): 8080/http Started Application in 5.552 seconds (JVM running for 6.366) Home Page Home Page Home Page 

Configuration:

@EnableAutoConfiguration @Configuration @ComponentScan public class Application extends WebMvcConfigurerAdapter {     public static void main(String[] args) {          ConfigurableApplicationContext context = SpringApplication.run(Application.class);     } } 

Controller:

@Controller public class WebController {     @RequestMapping(value="/")     public String index(){         System.out.println("Home Page");         return "index";     } } 

index.html :

<!DOCTYPE html> <html lang="en"> <body>  <h1>Hello</h1>     </body> </html> 

I have an extremely simple Spring-Boot MVC application here that is not working. One Controller with one page not loading and receiving a 404 not found.

I put a System.out.println("Home Page") statement in the controller method and validated that it is mapped and getting fired correctly but the template isn't loading.

The error:

Whitelabel Error Page  This application has no explicit mapping for /error, so you are seeing this as a fallback.  Thu Nov 06 23:43:51 EST 2014 There was an unexpected error (type=Not Found, status=404). 

The folder structure:

src/main/java  +-Application.java  +-WebController.java  src/main/resources  +-templates    +-index.html 

Abbreviated console output:

Server initialized with port: 8080 Starting service Tomcat Starting Servlet Engine: Apache Tomcat/7.0.55 Initializing Spring embedded WebApplicationContext Root WebApplicationContext: initialization completed in 1947 ms Mapping servlet: 'dispatcherServlet' to [/] Mapping filter: 'hiddenHttpMethodFilter' to: [/*] Mapped "{[/],methods=[],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.String app.WebController.index() Tomcat started on port(s): 8080/http Started Application in 5.552 seconds (JVM running for 6.366) Home Page Home Page Home Page 

Configuration:

@EnableAutoConfiguration @Configuration @ComponentScan public class Application extends WebMvcConfigurerAdapter {     public static void main(String[] args) {          ConfigurableApplicationContext context = SpringApplication.run(Application.class);     } } 

Controller:

@Controller public class WebController {     @RequestMapping(value="/")     public String index(){         System.out.println("Home Page");         return "index";     } } 

index.html :

<!DOCTYPE html> <html lang="en"> <body>  <h1>Hello</h1>     </body> </html> 

POM:

<?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.App</groupId>     <artifactId>App</artifactId>     <version>0.0.1-SNAPSHOT</version>      <name>App</name>     <description>App</description>      <parent>         <groupId>org.springframework.boot</groupId>         <artifactId>spring-boot-starter-parent</artifactId>         <version>1.1.8.RELEASE</version>     </parent>      <dependencies>         <dependency>             <groupId>org.springframework.boot</groupId>             <artifactId>spring-boot-starter</artifactId>         </dependency>            <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-data-jpa</artifactId>         </dependency>         <dependency>             <groupId>com.h2database</groupId>             <artifactId>h2</artifactId>             <version>1.4.181</version>         </dependency>         <!--dependency>             <groupId>org.springframework.boot</groupId>             <artifactId>spring-boot-starter-redis</artifactId>         </dependency-->          <dependency>             <groupId>com.firebase</groupId>             <artifactId>firebase-client</artifactId>             <version>1.0.1</version>         </dependency>         <dependency>             <groupId>org.scala-lang</groupId>             <artifactId>scala-library</artifactId>             <version>2.10.4</version>         </dependency>     </dependencies>      <properties>         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>         <start-class>App.Application</start-class>         <java.version>1.7</java.version>     </properties>      <repositories>         <repository>             <id>spring-releases</id>             <name>Spring Releases</name>             <url>http://repo.spring.io/libs-release</url>         </repository>     </repositories>      <pluginRepositories>         <pluginRepository>             <id>spring-releases</id>             <name>Spring Releases</name>             <url>http://repo.spring.io/libs-release</url>         </pluginRepository>     </pluginRepositories>         <build>         <plugins>             <plugin>                 <groupId>org.springframework.boot</groupId>                 <artifactId>spring-boot-maven-plugin</artifactId>             </plugin>         </plugins>     </build>  </project> 
like image 429
szxnyc Avatar asked Nov 07 '14 04:11

szxnyc


1 Answers

It looks like you don't have Thymeleaf on your class path.

Add this dependency:

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

and everything should work then.

If you're still facing some issues I recommend creating new project with http://start.spring.io/

like image 64
Maciej Walkowiak Avatar answered Oct 01 '22 04:10

Maciej Walkowiak