Spring boot app terminated at startup

11,660

Solution 1

I added in the pom file a tomcat dependency and it worked.

<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
        <scope>provided</scope>
</dependency>

Solution 2

It was because your app was NOT a web-app at all.

The best way to convert it into a web app such that it keeps running is, to add the Spring Boot Web dependency into your pom, so that the Tomcat is brought along automatically into the dependencies by Spring Boot to run the app as a web-app.

<!-- https://mvnrepository.com/artifact/org.springframework.boot/‌​spring-boot-starter-‌​web --> 
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!-- Edited to remove versioning and let Spring Boot Starter do it>
<version>1.5.3.RELEASE</version -->
</dependency>
Share:
11,660
georgiana_e
Author by

georgiana_e

Updated on June 13, 2022

Comments

  • georgiana_e
    georgiana_e almost 2 years

    I have created a spring boot project using spring initilizer. I use spring-boot-cli version v1.5.3.RELEASE.

    I just try to run:

    mvn clean install spring-boot:run -e
    

    But my server won't stay running, it is closing automatically. On port 8080 I have no other connection:

    2017-04-27 17:19:28.306  INFO 1895 --- [           main] com.example.EmaApplication               : Starting EmaApplication on robucslvm03 with PID 1895 (/home/ge/SpringTest/ema/target/classes started by ge in /home/ge/SpringTest/ema)
    2017-04-27 17:19:28.308  INFO 1895 --- [           main] com.example.EmaApplication               : No active profile set, falling back to default profiles: default
    2017-04-27 17:19:28.336  INFO 1895 --- [           main] s.c.a.AnnotationConfigApplicationContext : Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@6603c38b: startup date [Thu Apr 27 17:19:28 EEST 2017]; root of context hierarchy
    2017-04-27 17:19:28.787  INFO 1895 --- [           main] o.s.j.e.a.AnnotationMBeanExporter        : Registering beans for JMX exposure on startup
    2017-04-27 17:19:28.795  INFO 1895 --- [           main] com.example.EmaApplication               : Started EmaApplication in 0.688 seconds (JVM running for 5.119)
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: 4.263 s
    [INFO] Finished at: 2017-04-27T17:19:28+03:00
    [INFO] Final Memory: 29M/407M
    [INFO] ------------------------------------------------------------------------
    2017-04-27 17:19:28.919  INFO 1895 --- [       Thread-2] s.c.a.AnnotationConfigApplicationContext : Closing org.springframework.context.annotation.AnnotationConfigApplicationContext@6603c38b: startup date [Thu Apr 27 17:19:28 EEST 2017]; root of context hierarchy
    2017-04-27 17:19:28.921  INFO 1895 --- [       Thread-2] o.s.j.e.a.AnnotationMBeanExporter        : Unregistering JMX-exposed beans on shutdown
    

    LATER EDIT:

     package com.example;
    
        import org.springframework.web.bind.annotation.RequestMapping;
        import org.springframework.web.bind.annotation.RequestParam;
        import org.springframework.web.bind.annotation.RestController;
    
        @RestController
        public class DemoController {
    
            @RequestMapping(value="/echo")
                public String echo(@RequestParam(value="request", defaultValue="Hello!") String request) {
                    return request;
                }
        }
    

    Still not working. EDIT: here is the pom file:

    <?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>demo</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <packaging>jar</packaging>
    
        <name>demo</name>
        <description>Demo project for Spring Boot</description>
    
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>1.5.3.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
    
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
            <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-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
    
            </plugins>
        </build>
    
    
    </project>
    
  • M. Deinum
    M. Deinum almost 7 years
    You should have spring-boot-starter-web instead of the tomcat dependency. (Or you haven't shown the full / actual pom in your question).
  • Andy Wilkinson
    Andy Wilkinson almost 7 years
    There's no need for the version here and it's better not to include it. It'll be managed by Spring Boot due to the use of spring-boot-starter-parent. Relying on that management helps to keep all of the versions in sync.
  • Ashwin Gupta
    Ashwin Gupta almost 7 years
    Absolutely! My mistake of leaving the version there, which is not correct practice when relying upon SpringBoot keep it transparent for developers. Edited the post to keep it light. Thanks for point out @Andy :-)