加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – JVM如何读取系统属性?

发布时间:2020-12-15 08:48:26 所属栏目:Java 来源:网络整理
导读:我在System类中找到了这个,但我想知道它是如何实现的. /** * System properties. The following properties are guaranteed to be defined: * dl * dtjava.version ddJava version number * dtjava.vendor ddJava vendor specific string * dtjava.vendor.ur
我在System类中找到了这个,但我想知道它是如何实现的.

/**
     * System properties. The following properties are guaranteed to be defined:
     * <dl>
     * <dt>java.version         <dd>Java version number
     * <dt>java.vendor          <dd>Java vendor specific string
     * <dt>java.vendor.url      <dd>Java vendor URL
     * <dt>java.home            <dd>Java installation directory
     * <dt>java.class.version   <dd>Java class version number
     * <dt>java.class.path      <dd>Java classpath
     * <dt>os.name              <dd>Operating System Name
     * <dt>os.arch              <dd>Operating System Architecture
     * <dt>os.version           <dd>Operating System Version
     * <dt>file.separator       <dd>File separator ("/" on Unix)
     * <dt>path.separator       <dd>Path separator (":" on Unix)
     * <dt>line.separator       <dd>Line separator ("n" on Unix)
     * <dt>user.name            <dd>User account name
     * <dt>user.home            <dd>User home directory
     * <dt>user.dir             <dd>User's current working directory
     * </dl>
     */

    private static Properties props;
    private static native Properties initProperties(Properties props);

由于它是一种原生方法,我假设有一个C-File,它可以完成所有的魔术.
是否有一个特定于操作系统的文件,它通过C中的getenv()加载变量,或者这是某种特定平台的硬编码(无论是os.name,os.version等,都必须是动态的)?

如果操作系统是具有as行分隔符或< foo>的修改后的Linux内核,该怎么办?作为路径分隔符? JVM如何知道在哪里搜索这些本机文件,如果它们存储在下面…< foo> ..< foo> native< foo> amd_xyz甚至知道路径分隔符之前?

有没有办法研究实施?

解决方法

看看OpenJDK源代码.例如,Linux的文件分隔符定义为 like this:

inline const char* os::file_separator() {
  return "/"; 
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读