带入参数-Dspring.profiles.active=prod运行jar包报错

来源:4-1 项目属性配置知多少

建国后的第三代杠精

2020-03-28 22:58

我的当前目录是target下面

1、当我这样写的时候:【java -jar -Dspring.profiles.active=prod .\luckymoney-0.0.1-SNAPSHOT.jar】;报错:【Error: Unable to access jarfile .profiles.active=prod】

2、如果我这样写【java -jar  .\luckymoney-0.0.1-SNAPSHOT.jar -Dspring.profiles.active=prod】,可以成功运行,但是依旧使用dev的配置

3、如果我这样写【java -jar  .\luckymoney-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod】,才是成功运行


请教一下为什么会这样,我是在windows的powershell上输入的命令,其次我的java是1.8,spring-boot是2.1.3.RELEAS

写回答 关注

3回答

  • moon同学
    2020-07-16 17:27:15

    以下内容仅代表个人见解如有不对请指出

    当我们使用maven进行项目打包(mvn clean package)的时候会在当前目录下的target文件夹下生成可执行的jar文件。通常情况下我会将其copy出来放在一个待测试的文件夹下面(文件夹名称可自定义)接下来就是使用java -jar 命令启动了。

    值得注意的是:在你的项目中存在多个配置文件的时候。例如:application.yml、application-dev.yml、application-prod.yml、或者其他的配置(application-test.yml)。我们将整个项目打包成可执行的jar文件。以上的配置项是包涵在jar内部的。这个时候,若是applicaton.yml中并没有指定运行时的文件。比如没有加入如下配置

    spring:

      profiles:

        active: 配置文件名后缀(例如:dev 、prod、test)

    这个可执行的jar是默认加载 application.yml这个配置文件的。此时若是想让其加载我们的 dev、prod、test就需要在 使用这个命令   java -jar -Dspring.profiles.active=prod 可执行jar

    对于你们说的不好用,我没出现过。至于在后面加上 --spring.profiles.active=prod 方式也是可以的

    在前面使用  -D名称=值 ,是设置系统属性 后面的 -- 是springboot的启动方式

  • 慕粉18268321656
    2020-06-17 01:03:48

    我也遇到同样问题:【java -jar  .\luckymoney-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod】,才是成功运行。同问

  • qq_夜乡晟_0
    2020-05-01 19:51:07

    java -jar -Dspring.profiles.active=prod luckmoney-0.0.1-SNAPSHOT.jar


2小时上手SpringBoot

2小时上手SpringBoot,实战开发红包表白程序,体现程序员专属花式浪漫

11882 学习 · 115 问题

查看课程

相似问题