![](/img/trans.png)
[英]How to read “OS variables” from Java (not System.properties)
[英]How are Java system properties derived from the host?
我知道它在OpenJDK中,但我还没有找到它
一种常见的方法是从mercurial存储库中检出OpenJDK源代码树,并使用某种find
命令来查找您要查找的内容。 在那种情况下,一个简单的
$ find . -type f -exec grep "user\.home" {} \; -print
导致./jdk/src/windows/native/java/lang/java_props_md.c
(以及其他操作系统的类似文件,如./jdk/src/solaris/native/java/lang/java_props_md.c
)一个功能
java_props_t *
GetJavaProperties(JNIEnv* env) { ... }
在此函数中,系统属性值通过特定于操作系统的API读取。
该函数被调用在Java_java_lang_System_initProperties(JNIEnv *env, jclass cla, jobject props)
在源文件./jdk/src/share/native/java/lang/System.c
这再次被声明为在本地方法./jdk/src/share/classes/java/lang/System.java
:
private static native Properties initProperties(Properties props);
最后的初始化序列有点棘手:
java.lang.System
有一个静态初始化程序,它调用本机的registerNatives()
方法。 java.lang.System.initializeSystemClass()
(再次是Java)。 initializeSystemClass()
最终调用上面提到的本机initProperties()
方法来创建和初始化系统属性。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.