Подтвердить что ты не робот

В java -D что означает D?

Что делает D в

-Dproperty=value

Задайте значение системного свойства.

java application launcher означает? Почему-то это беспокоило меня, почему D?

4b9b3361

Ответ 1

Я всегда считал, что нужно определить значение свойства... возможно, наследие от компиляторов C, которые часто используют -D как похожие на #define в коде.

EDIT: ближайший источник для этого на данный момент - некоторая документация JDK 1.1, которая определяет флаг как:

переопределяет значение свойства. propertyName - это имя свойства, значение которого вы хотите изменить, а newValue - значение для его изменения. [...]

Это, по крайней мере, содержит слово "redefine", которое близко к "define":)

Ответ 2

В компиляторах 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

Я думаю, что это сходство является источником аналогичного синтаксиса.

Ответ 3

Причина D означает DEFINE, потому что именно этот командный переключатель определяет определяющие переменные.

Ответ 4

Это может быть для Define, потому что вы определяете свойство