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

Defineプロパティを定義しているため、 の可能性があります

于 2012-09-20T18:35:34.710 に答える