11

String str = System.getProperty("key","default"); プロパティファイルにキーと値のペアを設定できないため、私のアプリケーションは常にデフォルトを返すものを使用しています。

users->appdata->locallow->sun->java>deployment にある deployment.properties ファイルに設定し、Java コントロール パネルのランタイム パラメータに key=value を直接設定しようとしましたが、機能しませんでした。

正しく設定するのを手伝ってください。または、これらの値を設定する別のプロパティ ファイルが存在する場合は、パスを共有してください。グーグルで検索しましたが、見つかりませんでした。よろしくお願いします

編集: デプロイには jeety サーバーを使用します。ソース コードには多くのプロパティ ファイルがバンドルされています。

4

6 に答える 6

6

別のファイルを追加する必要はありません。

setPropertiesメソッドを使用します。

システム プロパティの既存のセットを変更するには、System.setProperties を使用します。このメソッドは、設定するプロパティを含むように初期化された Properties オブジェクトを受け取ります。このメソッドは、システム プロパティのセット全体を、Properties オブジェクトによって表される新しいセットに置き換えます。

警告: システム プロパティの変更は潜在的に危険であり、慎重に行う必要があります。多くのシステム プロパティは、起動後に再度読み取られることはなく、情報提供のために存在します。一部のプロパティを変更すると、予期しない副作用が生じる場合があります。

公式ドキュメント

それでも作成したい場合:ドキュメントによる例

于 2013-08-23T06:50:06.227 に答える
4

値は、実行時にネイティブ コードを使用して設定されます。System.c内に設定され、Java_java_lang_System_initPropertiesと呼ばれる関数

スニペット

JNIEXPORT jobject JNICALL
Java_java_lang_System_initProperties(JNIEnv *env, jclass cla, jobject props)
{
    char buf[128];
    java_props_t *sprops = GetJavaProperties(env);
    jmethodID putID = (*env)->GetMethodID(env,
                                          (*env)->GetObjectClass(env, props),
                                          "put",
            "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;");
    jmethodID removeID = (*env)->GetMethodID(env,
                                          (*env)->GetObjectClass(env, props),
                                          "remove",
            "(Ljava/lang/Object;)Ljava/lang/Object;");
    jmethodID getPropID = (*env)->GetMethodID(env,
                                          (*env)->GetObjectClass(env, props),
                                          "getProperty",
            "(Ljava/lang/String;)Ljava/lang/String;");
    jobject ret = NULL;
    jstring jVMVal = NULL;

    if (sprops == NULL || putID == NULL ) return NULL;

    PUTPROP(props, "java.specification.version",
            JDK_MAJOR_VERSION "." JDK_MINOR_VERSION);
    PUTPROP(props, "java.specification.name",
            "Java Platform API Specification");
    PUTPROP(props, "java.specification.vendor",
            JAVA_SPECIFICATION_VENDOR);

    PUTPROP(props, "java.version", RELEASE);
    PUTPROP(props, "java.vendor", VENDOR);
    PUTPROP(props, "java.vendor.url", VENDOR_URL);
    PUTPROP(props, "java.vendor.url.bug", VENDOR_URL_BUG);
    .......
    .......
    .......
于 2014-04-14T15:53:01.283 に答える
4

は、 JVMSystem.getProperty(String)のグローバル システムに関連するプロパティを返します。ここでは、利用可能なプロパティのリストを見つけることができます。

プロパティのカスタム ファイルをロードする場合は、このファイルを独自のプロパティ オブジェクトにロードする必要があります。この例については、こちら を参照してください。このPropertiesオブジェクトは、システム プロパティとは別に保持する必要があります。カスタム プロパティをシステム プロパティにロードしないでください。(これは を介し​​て行うことができますSystem.setProperties(Properties)。) これは、プログラム設計が不十分であることを示すグローバル変数を定義するようなものです。

于 2013-08-23T06:54:36.603 に答える
0

Java のシステム プロパティは、JVM によって自動的に設定されます。-D スイッチをランタイムに渡すことで、追加のプロパティを追加できます。

java -Dkey=blue -Dhopp=topp ....

于 2013-08-23T06:57:00.050 に答える