Что делает D в
-Dproperty=value
Задайте значение системного свойства.
java application launcher означает? Почему-то это беспокоило меня, почему D?
Что делает D в
-Dproperty=value
Задайте значение системного свойства.
java application launcher означает? Почему-то это беспокоило меня, почему D?
Я всегда считал, что нужно определить значение свойства... возможно, наследие от компиляторов C, которые часто используют -D
как похожие на #define
в коде.
EDIT: ближайший источник для этого на данный момент - некоторая документация JDK 1.1, которая определяет флаг как:
переопределяет значение свойства. propertyName - это имя свойства, значение которого вы хотите изменить, а newValue - значение для его изменения. [...]
Это, по крайней мере, содержит слово "redefine", которое близко к "define":)
В компиляторах 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
Я думаю, что это сходство является источником аналогичного синтаксиса.
Причина D означает DEFINE, потому что именно этот командный переключатель определяет определяющие переменные.
Это может быть для Define
, потому что вы определяете свойство