如何通过命令行启动Spring Boot应用程序?

156

我有一个spring-boot应用程序,我需要通过命令行进入文件夹目录并启动我的Web应用程序。 我有一个名为Application.java的类,其中包含以下代码。

@SpringBootApplication(scanBasePackages = {"com.ubs.tas.topcat.dashboard"})
public class Application extends SpringBootServletInitializer {
    private static final Logger LOGGER = LoggerFactory.getLogger(Application.class.getName());
    private static final Class<Application> applicationClass = Application.class;

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(applicationClass);
    }

    public static void main(String[] args) {
        LOGGER.info("Starting...");
        SpringApplication.run(Application.class, args);
    }
}

我设置了classpath,然后尝试运行命令 "java ApplicationUtility",但是我收到了以下错误信息 "Could not find the main class: ApplicationUtility. Program will exist."


9
什么样的项目?例如,如果你正在使用带有适当插件的Maven,“mvn spring-boot: run”将起作用。你是否阅读了文档 - jonrsharpe
14个回答

228

我猜想你正在尝试编译并运行应用程序,而且没有使用集成开发环境(IDE)。

我还猜想你已经安装了maven并正确地将其添加到环境变量中。

如果需要安装并添加maven到环境变量,请访问安装maven。如果在代理下,请查看将代理添加到maven

通过命令行导航到项目的根目录,并执行命令

mvn spring-boot:run

命令行界面将在配置的端口上运行您的应用程序,您可以像在IDE中启动应用程序一样访问它。

注意:只有在您的pom.xml文件中添加了Maven才能正常工作。


如果项目已经打包成war文件,那么“项目的根目录”是什么意思? - mounaim
9
应用程序的根目录是包含应用程序pom.xml文件的文件夹。它相当于你找到.war文件的上一级文件夹。请注意,这里指的是向上移动一个文件夹。 - Adindu Stevens
2
对于没有使用Spring Boot根POM的项目,它不起作用,我们需要使用全名,就像在这个Maven- No plugin found for prefix 'spring-boot' in the current project and in the plugin groups答案中所示。 - Michał Ziober
5
它只有在您的pom.xml中添加了Maven或者除Maven本身外还安装了Spring Boot Maven插件时才能工作。顺便问一下,您所说的“将Maven添加到pom.xml中”是什么意思?我们应该如何将Maven添加到pom.xml中呢? - Andrey M. Stepanov
在一个多模块的Maven项目中,你首先需要切换到应用程序项目的目录。当我在项目的主文件夹中运行"mvn spring-boot:run"时,我收到一个错误提示:"当前项目中找不到以'spring-boot'为前缀的插件..." - Zaphod Beeblebrox

77

首先需要构建jar文件,以下是运行jar文件中主类的语法。

java -jar path/to/your/jarfile.jar fully.qualified.package.Application 

3
$ java -jar ./target/springboot-https-seed-1.0-SNAPSHOT.jar ./src/main/java/be/heydari/seed/Application在./target/springboot-https-seed-1.0-SNAPSHOT.jar中没有主清单属性。 - Philip Rego
@PhilipRego,请确认您指定的是Java文件路径,而不是类。请尝试使用以下命令:java -jar ./target/springboot-https-seed-1.0-SNAPSHOT.jar be.heydari.seed.Application - Srikanth Anusuri
1
你可以通过在pom.xml中添加“完全限定的Main类名”来简化该命令。例如:<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> com.myproject.myapp.Application - Gana
java -jar path/to/your/jarfile.jar(在上述pom更改后) - Gana

73

如果您正在使用Gradle,您可以使用:

./gradlew bootRun

3
假设只有少数用户会使用Gradle,那么这个答案非常有帮助。 - Arefe

48

使用 Maven 运行 Spring Boot 应用程序

您还可以使用 Maven 插件来运行您的 Spring Boot 应用程序。使用以下示例使用 Maven 插件运行 Spring Boot 应用程序:

mvn spring-boot:run

使用Gradle运行Spring Boot应用程序的命令如下:

gradle bootRun

35

运行spring-boot应用程序需要遵循一些步骤。

  1. Maven设置(如果已经设置,请忽略):

    a. 从https://maven.apache.org/download.cgi安装Maven

    b. 解压缩Maven并将其保存在C驱动器中(您可以将其保存在任何位置。路径位置将相应更改)。

    c. 在系统变量中设置MAVEN_HOME。 enter image description here

    d. 设置Maven的路径

enter image description here

  • 在POM.XML中添加Maven插件
  •     <build>
           <plugins>
             <plugin>
               <groupId>org.springframework.boot</groupId>
               <artifactId>spring-boot-maven-plugin</artifactId>
              </plugin>
            </plugins>
          </build>
    
  • 使用Maven构建Spring Boot项目

        mvn package
    

    或者

          mvn install / mvn clean install
    
  • 使用Maven运行Spring Boot应用程序:

         mvn spring-boot:run
    
  • [可选] 使用java -jar命令运行Spring Boot应用程序

          java -jar target/mywebserviceapp-0.0.1-SNAPSHOT.jar
    

  • 3
    请使用mvn package代替mvn install,mvn install会将生成的文件复制到您本地的maven存储库(.m2),这不是首选方法。 - Dharmendrasinh Chudasama
    2
    更正:maven 打包应该是 mvn package。 - LakShan

    27

    1.使用java -jar命令运行Spring Boot应用程序

    要在终端窗口的命令行中运行您的Spring Boot应用程序,可以使用java -jar命令。 前提是您的Spring Boot应用程序已经打包为可执行的jar文件。

    java -jar target/app-0.0.1-SNAPSHOT.jar
    

    2.使用Maven运行Spring Boot应用程序

    您还可以使用Maven插件来运行Spring Boot应用程序。请使用以下命令使用Maven插件运行Spring Boot应用程序:

    mvn spring-boot:run
    

    3.使用Gradle运行Spring Boot应用程序

    如果您使用Gradle,可以使用以下命令运行Spring Boot应用程序:

    gradle bootRun
    

    20

    Spring Boot提供了与Maven一起使用的插件。

    因此,您可以转到项目目录并运行:

    mvn spring-boot:run
    

    当您在使用spring-boot-devs-tool且应用程序发生更改时,使用自动重新加载/重启功能,此命令行运行将变得非常容易。


    1
    对于没有使用Spring Boot根POM的项目,它不起作用,我们需要使用全名,就像在这个Maven- No plugin found for prefix 'spring-boot' in the current project and in the plugin groups答案中所示。 - Michał Ziober

    8

    对于 macOS 用户 如果您使用 maven 配置了应用程序, 首先,在终端中进入您的项目目录, 然后只需运行以下命令:

    ./mvnw spring-boot:run
    

    任务完成。现在您可以使用端口号访问本地主机。

    此命令在Spring官方指南中有提到。


    8

    通过Maven配置的Spring Boot项目可以使用以下命令从项目源文件夹运行:

    mvn spring-boot:run
    

    5

    对于基于Maven的项目,请使用以下命令运行Spring Boot应用程序:

    mvn spring-boot:run
    

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接