Spring Boot – Which main class to start

If Spring Boot project contains multiple main classes, Spring Boot will fail to start or packag for deployment.

Terminal

$ mvn package 
#or
$ mvn spring-boot:run

Failed to execute goal org.springframework.boot:spring-boot-maven-plugin:1.4.2.RELEASE:run (default-cli) 
Execution default-cli of goal org.springframework.boot:spring-boot-maven-plugin:1.4.2.RELEASE:run failed: 
Unable to find a single main class from the following candidates 
 [com.mkyong.Test, com.mkyong.SpringBootWebApplication] -> [Help 1]

Maven example

1.1 Define single main class via start-class properties

pom.xml

  <properties>
      <!-- The main class to start by executing java -jar -->
      <start-class>com.mkyong.SpringBootWebApplication</start-class>
  </properties>

1.2 Alternatively, define the main class in the spring-boot-maven-plugin

pom.xml

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <mainClass>com.mkyong.SpringBootWebApplication</mainClass>
                </configuration>
            </plugin>
        </plugins>
    </build>

References

  1. Spring Boot – The executable jar format
  2. Spring Boot Maven Plugin – Usage

8 comments on “Spring Boot – Which main class to start

  1. Should I use a common spring boot main class in a library that my other spring microservices pull?

    Reply
  2. How does it pick if i just have one main class but i am not using the @SpringBootApplication annotation?

    Reply
  3. I’m getting “java.lang.ClassNotFoundException” when try to run application with “mvn spring-boot:run” command

    Reply
    1. you should cut what class not found, that we can help to find the problem

      Reply
      1. The main class isn’t found for my case : java.lang.NoClassDefFoundError: org/springframework/boot/SpringApplication

        Reply

Leave a Comment

Your email address will not be published. Required fields are marked *