我的应用程序使用String str = System.getProperty("key","default");
,它始终返回默认值,因为我无法在属性文件中设置键值对。
我尝试在位于users-> appdata-> locallow-> sun-> java>部署的deployment.properties文件中设置它,并直接将key = value放在java控制面板中的runtime参数中但不能正常工作
请帮我正确设置,或者如果存在要设置这些值的其他属性文件,请分享路径? 我谷歌但是找不到。谢谢你提前
编辑:我们使用jeety服务器进行部署。我们的源代码捆绑了许多属性文件。
答案 0 :(得分:5)
无需添加单独的文件。
使用setProperties
方法。
要修改现有系统属性集,请使用System.setProperties。此方法采用已初始化为包含要设置的属性的Properties对象。此方法使用Properties对象表示的新集替换整个系统属性集。
警告:更改系统属性具有潜在危险,应谨慎行事。启动后不会重读许多系统属性,这些属性仅供参考。更改某些属性可能会产生意外的副作用。
如果您仍想创建:Example by docs
答案 1 :(得分:4)
如果要为System.getProperty设置自定义属性文件,我们这样做: 1.创建基类作为您为Web应用程序创建的所有类的基础对象。 2.在基类中,编写此代码
java.io.InputStream is = loader.getResourceAsStream("custom system property filename");
System.getProperties().load(is);
答案 2 :(得分:2)
好吧,System.getProperty(String)
返回与JVM的全局系统相关的属性。 Here you can find可用属性列表。
如果要加载属性的自定义文件,则应将此文件加载到您可以find an example here的属性对象中。您应该保留此Properties
object单独的系统属性。您永远不应该只将自定义属性加载到系统属性中。 (您可以通过System.setProperties(Properties)
执行此操作。)这就像定义sign of poor program design的全局变量一样。
答案 3 :(得分:2)
在运行时使用本机代码设置值。它设置在 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);
.......
.......
.......
答案 4 :(得分:1)
它们存储在调试/运行配置中 click here for screenshot
您可以像这样访问它们。
System.out.println(System.getProperty("username"));
System.out.println(System.getProperty("password"));
答案 5 :(得分:0)
Javas系统属性由JVM自动设置。您可以通过将-D开关传递给运行时来添加其他属性,例如
java -Dkey=blue -Dhopp=topp ....
等