Raj*_*mar 8 java filesystems jvm
我的应用程序使用String str = System.getProperty("key","default");
始终返回默认值,因为我无法在属性文件中设置键值对.
我尝试在位于users-> appdata-> locallow-> sun-> java>部署的deployment.properties文件中设置它,并直接将key = value放在java控制面板中的runtime参数中但不能正常工作.
请帮我正确设置,或者如果存在要设置这些值的不同属性文件,请分享路径?我谷歌但却找不到.谢谢你提前
编辑:我们使用jeety服务器进行部署.我们有很多属性文件与我们的源代码捆绑在一起.
这些值是在运行时使用本机代码设置的。它在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)
如果您想为 设置自定义属性文件System.getProperty
,这就是我们在这里所做的:
java.io.InputStream is = loader.getResourceAsStream("custom system property filename");
System.getProperties().load(is);
Run Code Online (Sandbox Code Playgroud)