46

D在什么

-Dproperty=value

设置系统属性值。

Java 应用程序启动器代表什么?出于某种原因,它一直困扰着我,为什么是 D?

4

4 回答 4

50

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

编辑:目前我最接近的来源是一些JDK 1.1文档,它将标志指定为:

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

至少包含接近“定义”的“重新定义”一词:)

于 2012-09-20T18:33:18.127 回答
22

在 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

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

于 2012-09-20T19:12:22.330 回答
11

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

于 2012-09-20T18:34:02.067 回答
3

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

于 2012-09-20T18:35:34.710 回答