SpringBoot: Unable to find a single main class from the following candidates

匿名 (未验证) 提交于 2019-12-03 03:03:02

问题:

I've generated a Spring Boot web application using Spring Initializer, embedded Tomcat, Thymeleaf template engine.Technologies used: Spring Boot 1.4.2.RELEASE, Spring 4.3.4.RELEASE, Thymeleaf 2.1.5.RELEASE, Tomcat Embed 8.5.6, Maven 3, Java 8

I have an SpringBoot app. with these 2 classes:

@Profile("!war") @SpringBootApplication @Import({SecurityConfig.class ,PersistenceConfig.class, ServiceConfig.class}) public class BookApplication {      public static void main(String[] args) {         SpringApplication.run(BookApplication.class, args);     } }  @Profile("war") @Import({SecurityConfig.class ,PersistenceConfig.class}) @SpringBootApplication public class BookApplicationWar extends SpringBootServletInitializer {      @Override     protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {         return application.sources(BookApplicationWar.class);     }      public static void main(String[] args) throws Exception {         SpringApplication.run(BookApplicationWar.class, args);     }  } 

I generate the war with this command

 mvn clean package -DskipTests -Dspring.profiles.active=pebloc,war -DAPP-KEY=pebloc 

But I got this error:

[ERROR] Failed to execute goal org.springframework.boot:spring-boot-maven-plugin:1.5.2.RELEASE:repackage (default) on project book: Execution default of goal org.springframework.boot:spring-boot-maven-plugin:1.5.2.RELEASE:repackage failed: Unable to find a single main class from the following candidates [com.tdk.BookApplication, com.tdk.BookApplicationWar] -> [Help 1] 

回答1:

If you have more than one main class, you need to explicitly configure the main class in each profile:

<profiles>     <profile>         <id>profile1</id>         <properties>           <spring.boot.mainclass>com.SomeClass</spring.boot.mainclass>         </properties>     </profile>     <profile>         <id>profile2</id>         <properties>           <spring.boot.mainclass>com.SomeOtherClass</spring.boot.mainclass>         </properties>     </profile> </profiles> 

...

<plugin>     <groupId>org.springframework.boot</groupId>     <artifactId>spring-boot-maven-plugin</artifactId>     <version>1.5.2.RELEASE</version>     <executions>       <execution>         <goals>           <goal>repackage</goal>         </goals>         <configuration>           <mainClass>${spring.boot.mainclass}</mainClass>         </configuration>       </execution>     </executions>     ... </plugin> 

See spring-boot:repackage



回答2:

[ERROR] Failed to execute goal org.springframework.boot:spring-boot-maven-plugin:1.5.2.RELEASE:repackage (default) on project book: Execution default of goal org.springframework.boot:spring-boot-maven-plugin:1.5.2.RELEASE:repackage failed: Unable to find a single main class from the following candidates [com.tdk.BookApplication, com.tdk.BookApplicationWar]  

One possible reason to getting following error is more than one main methods in your code, Spring boot allow only one main method across all class in same project.



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!