在java -D中D代表什么?

时间:2012-09-20 18:31:46

标签: java properties

中的D是什么
-Dproperty=value

设置系统属性值。

java application launcher代表什么?出于某种原因,它一直困扰着我,为什么D?

4 个答案:

答案 0 :(得分:32)

我一直认为定义属性的值......可能是来自C编译器的遗留物,它通常使用-D#define类似在代码中。

编辑:目前我最接近此消息来源的是some JDK 1.1 documentation,它将标志指定为:

  

重新定义属性值。 propertyName是要更改其值的属性的名称,newValue是要将其更改为的值。 [...]

至少包含“redefine”这个词接近“define”:)

答案 1 :(得分:14)

在C / C ++编译器中,类似的语法用于从命令行定义预处理器宏:

#include <stdio.h>
int main(int argc, char* argv[]) {
    printf(GREETING);
    return 0;
}

gcc hello.c -DGREETING="\"Hello, world\""

Java没有预处理器,但使用-D定义的属性因类似原因而被使用 - 传递一些有关当前环境的特定于程序的信息。唯一的区别是在Java中我们在运行时传递它们,而不是在编译时传递它们:

public class Hello {
    public static void main(String[] args) {
        System.out.println(System.getProperty("greeting"));
    }
}

java -Dgreeting="Hello, world" Hello

我认为这种相似性是类似语法的来源。

答案 2 :(得分:8)

原因是 D 代表 DEFINE ,因为该命令切换所做的是定义变量。

答案 3 :(得分:3)

可能是Define,因为您正在定义属性