System.getProperty("key")从何处(哪个属性文件)读取?

Raj*_*mar 8 java filesystems jvm

我的应用程序使用String str = System.getProperty("key","default"); 始终返回默认值,因为我无法在属性文件中设置键值对.

我尝试在位于users-> appdata-> locallow-> sun-> java>部署的deployment.properties文件中设置它,并直接将key = value放在java控制面板中的runtime参数中但不能正常工作.

请帮我正确设置,或者如果存在要设置这些值的不同属性文件,请分享路径?我谷歌但却找不到.谢谢你提前

编辑:我们使用jeety服务器进行部署.我们有很多属性文件与我们的源代码捆绑在一起.

Sur*_*tta 5

无需添加单独的文件。

使用setProperties方法。

若要修改现有的系统属性集,请使用System.setProperties。此方法采用已初始化为包含要设置的属性的Properties对象。此方法用Properties对象表示的新集替换整个系统属性集。

警告:更改系统属性有潜在的危险,应谨慎操作。启动后不会重新读取许多系统属性,这些属性仅供参考。更改某些属性可能会产生意想不到的副作用。

官方文件

如果您仍要创建:docs的示例


Ane*_*ran 5

这些值是在运行时使用本机代码设置的。它在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);
    .......
    .......
    .......
Run Code Online (Sandbox Code Playgroud)


Sco*_*Chu 5

如果您想为 设置自定义属性文件System.getProperty,这就是我们在这里所做的:

  1. 为您将为 Web 应用程序创建的所有类创建一个基类作为基对象。
  2. 在基类中,编写此代码
    java.io.InputStream is = loader.getResourceAsStream("custom system property filename");
    System.getProperties().load(is);
    
    Run Code Online (Sandbox Code Playgroud)