Maven项目中有多个带有 @SpringBootApplication注解的类

后端开发 2026-07-09

我正在开发一个多模块的Spring Boot项目。

应用程序包含两个标注着 @SpringBootApplication 的类:

@SpringBootApplication
public class OrganigramaApplication {
    public static void main(String[] args) {
        SpringApplication.run(OrganigramaApplication.class, args);
    }
}

@SpringBootApplication
public class TreeAppApplication {
    public static void main(String[] args) {
        SpringApplication.run(TreeAppApplication.class, args);
    }
}

运行时:

mvn spring-boot:run

我遇到了如下错误:

Unable to find a single main class from the following candidates

我理解Spring Boot会发现多个入口点,但我不确定在多模块架构中哪些被认为是最佳实践。

我已经尝试过:

  • 从Eclipse运行应用程序。
  • 直接执行插件。
  • 验证包扫描配置。

在Maven多模块项目中,如何处理多个 @SpringBootApplication 类才是推荐的方法?

解决方案

问题是什么?

正如你所说,Spring Boot会发现多个入口点,因此它无法确定哪个才是正确的入口点,从而无法启动应用。

解决方案

你需要只有一个入口点,这意味着你的应用只有一个带有 @SpringBootApplication 的类。在多模块项目中,我们通常只有一个main方法来加载整个应用及其他模块。要实现这一点,通常会创建一个专门的模块,该模块包含main方法。

这篇 artile 解释了如何创建多模块项目,此外这个 repository 是一个很好的示例。

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章