【问题标题】:Java VM argument type -D and -- [duplicate]Java VM参数类型-D和--[重复]
【发布时间】:2020-08-28 21:17:45
【问题描述】:

这可能是我要问的一个微不足道的问题,但我没有在任何文档中得到这个必需的信息,可能是我忽略了。目前我正在使用 OpenJDK 8。

编辑:

抱歉,具体用例,我正在运行 Spring boot jar。

在传递 JVM 参数时,我们的选项喜欢

-Dspring.profiles.active=local

但最近我发现很多地方不是-D,而是--

--spring.profiles.active=local

很高兴了解两者及其区别以及在哪里使用它们。

【问题讨论】:

标签: java spring-boot java-8 jvm


【解决方案1】:

java 命令的语法是:

java [options] mainclass [args ...]

您可以指定除mainclass 以外的其他内容,但重要的是options 位于该部分之前,args 位于该部分之后,即它们不能混合。

java 命令支持很多选项,其中之一是:

-Dproperty=value

设置系统属性值。 property 变量是一个不带空格的字符串,表示属性的名称。 value 变量是表示属性值的字符串。如果 value 是带空格的字符串,则将其括在引号中(例如 -Dfoo="foo bar")。

以便它由 Java 运行时处理。

args 是程序参数列表,由 Java 代码处理,这意味着它们可以是任何东西。由处理它们的代码决定它们的含义。

Spring 程序使用SpringApplication 方法来处理这些参数。查看您的main 方法:

注册 CommandLinePropertySource 以将命令行参数公开为 Spring 属性。

请参阅 javadoc 了解更多详细信息。

Spring 也有一个 PropertySource 用于使 Java 系统属性可用作 Spring 环境属性,这就是 Spring 可以使用以下任一命令定义的属性的原因:

java -Dfoo=bar mainclass

java mainclass --foo=bar

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-03
    • 1970-01-01
    • 2012-07-22
    • 2017-09-18
    • 2016-06-28
    • 2017-12-31
    • 2018-01-22
    相关资源
    最近更新 更多