gpt4 book ai didi

java - 由 Properties 类扩展的 HashTable 中的默认值

转载 作者:行者123 更新时间:2023-11-30 08:02:38 25 4
gpt4 key购买 nike

在 Windows 2012 R2 平台上,我注意到 winver 返回 6.3,但 System.getProperty("os.version") 返回 6.2;我正在查看此源代码:

class  [More ...] Properties extends Hashtable<Object,Object> {

protected Properties defaults;
public String [More ...] getProperty(String key) {
Object oval = super.get(key);
String sval = (oval instanceof String) ? (String)oval : null;
return ((sval == null) && (defaults != null)) ? defaults.getProperty(key) : sval;
}
}

我怀疑 os.version 的值是从这里获得的。我的怀疑对吗?

Object oval = super.get(key);

HashTable 的内容是什么?它是如何填充的? (我还没有将 java 源代码作为项目加载到我的 eclipse 工作台中)

最佳答案

由于 static native 方法 initProperties(Properties props),系统属性 os.version 由 JVM 本身添加 如你所见 here527 行。在初始化 System 类时调用此方法,这是通过方法 initializeSystemClass() 完成的。

换句话说,这意味着您的 JVM 的 native 代码无法识别您的操作系统版本,您应该升级您的 JDK 以解决此问题。

Here是一篇博客文章,博主在使用旧版本的 Java 时遇到了同样的问题,升级它足以解决问题。

关于java - 由 Properties 类扩展的 HashTable 中的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36759885/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com