如何使用多个主类运行 Spring Boot 项目

Posted

技术标签:

【中文标题】如何使用多个主类运行 Spring Boot 项目【英文标题】:How to run spring boot project with multiple main classes 【发布时间】:2021-03-06 03:50:00 【问题描述】:

我有一个包含 3 个主要类的 Spring Boot 项目

com.abc.test --> Application
com.abc.test.pqr  --> ApplicationMain2
com.abc.test.xyz  --> ApplicationMain3

现在 spring boot 项目无法构建,所以我将 POM 条目作为

<properties>
        <start-class>com.abc.test.Application</start-class>
</properties>

从 Eclipse 我能够成功运行所有 3 Main 并创建一个 jar。 但是每当我尝试使用命令运行 jar 时,它正在运行的 Application 类。

java -jar -Dloader.main=com.abc.test.pqr.ApplicationMain2 test-1.0.jar

使用以下命令给出类未找到的错误

java -cp test-1.0.jar -Dloader.main=com.abc.test.pqr.ApplicationMain2 
java -cp -Dloader.main=com.abc.test.pqr.ApplicationMain2 test-1.0.jar com.abc.test.pqr.ApplicationMain2
java -classpath test-1.0.jar com.abc.test.pqr.ApplicationMain2

【问题讨论】:

From eclipse I am able to run all 3 Main successfully and create a jar 并且都在同一个端口上正常运行? 从 Eclipse 中,您是将所有 3 个主要类作为 Java 应用程序还是作为 Spring Boot 应用程序运行? 请参阅:dzone.com/articles/…. @Ashish 谢谢先生。我忘了添加属性启动器命令。 @Qwer Izuken 这是一个非常好的观点。但我没有同时运行所有三个进程。它只是我打包在 1 个 jar 中的 3 个项目,我一次只使用 1 个。无论如何,谢谢您的回复。 【参考方案1】:

非常感谢 Ashish 我以前运行的命令是

java -cp test-1.0.jar -Dloader.main=com.abc.test.pqr.ApplicationMain2 

问题是我们不包括 PropertiesLauncher。 除了类,我们还需要明确地给出属性启动器的路径。所以正确的命令如下

java -cp test-1.0.jar -Dloader.main=com.abc.test.pqr.ApplicationMain2 org.springframework.boot.loader.PropertiesLauncher

【讨论】:

以上是关于如何使用多个主类运行 Spring Boot 项目的主要内容,如果未能解决你的问题,请参考以下文章

spring-boot Maven:如何使用主类创建可执行 jar?

spring boot错误: 找不到或无法加载主类

Gradle 构建没有主类的 Spring Boot 库

Spring Boot 程序找不到主类

spring boot项目后台运行

Spring Boot 主类及目录结构介绍