Dは何ですか
-Dproperty=value
システムプロパティ値を設定します。
Javaアプリケーションランチャーの略ですか?どういうわけかそれは私を悩ませてきました、なぜD?
私は常に、プロパティの値を定義することであると想定していました...おそらくCコンパイラの遺産であり、コード内で-D
同様に使用されることがよく#define
あります。
編集:現時点でこれのソースに最も近いのは、フラグを次のように指定するJDK 1.1ドキュメントです。
プロパティ値を再定義します。propertyName は値を変更するプロパティの名前で、newValue は変更後の値です。[...]
それには、少なくとも「定義」に近い「再定義」という単語が含まれています:)
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
この類似性が類似構文の源だと思います。
その理由は、 DがDEFINEの略であるためです。これは、そのコマンド スイッチが行うことは変数を定義するためです。
Define
プロパティを定義しているため、 の可能性があります