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

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

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

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

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

如果要为System.getProperty设置自定义属性文件,我们这里要做的是:1。创建一个基类作为您为Web应用程序创建的所有类的基础对象。 2.在基类中,编写此代码

 java.io.InputStream is = loader.getResourceAsStream("custom system property filename"); System.getProperties().load(is); 

无需添加单独的文件。

使用setProperties方法。

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

警告 :更改系统属性可能存在危险,应谨慎处理。 启动后不会重读许多系统属性,仅供参考。 更改某些属性可能会产生意外的副作用。

官方文件

如果您仍想创建: 按文档示例

好吧, System.getProperty(String)返回与JVM的全局系统相关的属性。 在这里您可以找到可用属性的列表。

如果要加载属性的自定义文件,则应将此文件加载到自己的属性对象中,您可以在此处找到示例 。 您应该将此Properties对象与系统属性分开。 您永远不应该只将自定义属性加载到系统属性中。 (您可以通过System.setProperties(Properties)执行此操作。)这就像定义全局变量一样,这是程序设计不佳的标志 。

在运行时使用本机代码设置值。 它在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); ....... ....... ....... 

JVM系统属性由JVM自动设置。 您可以通过将-D开关传递给运行时来添加其他属性,例如

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

等等

它们存储在debug / run configs中, 点击此处查看截图

你可以像这样访问它们。

 System.out.println(System.getProperty("username")); System.out.println(System.getProperty("password"));