System.getProperty设置与获取属性的方法分析

冰川箭仙

冰川箭仙

2026-06-26

656人浏览

原创

system.getproperty()是java中读取jvm系统属性的标准方式,用于获取os.name、java.version等内置属性或-d参数指定的自定义属性,不能读取操作系统环境变量(需用system.getenv())或android系统属性(需android.os.systemproperties)。

system.getproperty设置与获取属性的方法分析

System.getProperty() 是 Java 中读取 JVM 系统属性的标准方式,它不操作操作系统环境变量,也不修改 Android 系统属性;它只读取由 JVM 启动时加载或运行时设置的键值对。设置需配合 System.setProperty() 或启动参数 -D,获取则直接调用 getProperty() 即可。

常见系统属性的获取方式

Java 提供了一批预定义的系统属性,例如 os.name、java.version、user.home 等,这些属性在 JVM 启动时自动初始化,无需额外配置:

  • os.name → 操作系统名称(如 "Linux"、"Windows 10")
  • java.version → JDK 版本号(如 "17.0.2")
  • user.home → 当前用户主目录(跨平台可靠,比 getenv("HOME") 更推荐)
  • user.dir → JVM 启动时的工作目录
  • file.separator → 文件路径分隔符(Windows 为 "\", Linux/macOS 为 "/")

设置自定义属性的两种途径

要让 System.getProperty() 能读到新属性,必须先完成设置。主要有以下两种方式:

  • 启动时通过 -D 参数注入:运行命令如 java -Dapp.env=prod -Ddebug=true MyApp,之后可用 System.getProperty("app.env") 获取
  • 运行时调用 System.setProperty():代码中执行 System.setProperty("config.mode", "test"),后续调用 System.getProperty("config.mode") 即可返回 "test"

注意:setProperty() 设置的属性仅对当前 JVM 实例有效,重启后丢失;-D 方式设置的属性同样只在本次 JVM 生命周期内有效。

Diagrimo
Diagrimo

AI信息图生成、图表制作

下载

与操作系统环境变量的关键区别

很多人误以为 System.getProperty() 可以读取 PATH、JAVA_HOME 等环境变量,这是错误的:

  • System.getProperty() 读的是 JVM 层级的 system properties(如 -D 或内置属性)
  • System.getenv() 才用于读取操作系统环境变量(如 System.getenv("PATH")
  • JAVA_HOME、PWD、ANDROID_HOME 等属于环境变量,不能用 getProperty() 获取,除非你手动用 -D 显式传入

例如:System.getProperty("JAVA_HOME") 总是返回 null,正确写法是 System.getenv("JAVA_HOME")(Linux/macOS)或 System.getenv("JAVA_HOME")(Windows 同样支持)。

Android 中的 SystemProperties 不是同一个东西

Android 平台有名为 android.os.SystemProperties 的类,但它和 Java 的 System.getProperty() 完全无关:

  • 前者是 Android Native 层属性系统(类似 Linux sysctl),用于控制底层行为(如 ro.debuggable)
  • 后者是标准 Java API,作用域仅限于当前 JVM
  • Android 的 SystemProperties 是隐藏 API,需反射或 JNI 访问,且需 system/root 权限才能 set
  • 普通 App 无法直接使用 android.os.SystemProperties.set(),但可以安全调用 System.getProperty()

所以,在 Android 应用开发中,若只需获取 Java 运行时信息(如 user.home),用 System.getProperty() 即可;若需读取 ro.build.version.release 等系统属性,应走反射调用或依赖封装好的工具类。

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
Maven零基础入门教程
Maven零基础入门教程

本合集由PHP中文网精心整理,提供Maven零基础入门到完整使用的保姆级教程。内容涵盖环境安装、核心配置、仓库管理及项目构建等核心知识点。通过详细步骤解析与代码示例,助你快速掌握Maven的依赖管理与自动化构建,轻松解决Java项目中的各种痛点,是新手入门与进阶的必备指南。

2026.08.05

2

18

Maven安装及配置教程
Maven安装及配置教程

本合集由PHP中文网精心整理,提供Maven安装配置与环境配置详情指南。内容涵盖Maven下载、解压安装、环境变量配置、阿里云镜像加速及本地仓库修改等全流程。教程通俗易懂,帮助开发者轻松解决依赖管理难题,快速掌握Maven核心构建技能,是Java开发者的必备实战指南。

2026.08.05

2

24

Selenium WebDriver元素定位与页面操作教程
Selenium WebDriver元素定位与页面操作教程

本专题整理Selenium WebDriver元素定位、XPath、CSS Selector、等待机制、窗口切换、Frame处理、Alert弹窗、Cookie操作和文件上传等核心用法。

2026.08.05

4

26

Selenium Grid分布式测试与并行执行教程
Selenium Grid分布式测试与并行执行教程

本专题整理Selenium Grid架构、远程WebDriver、并行测试、Docker部署、Kubernetes动态Grid、浏览器矩阵和测试环境扩展方法,适合进阶自动化测试团队使用。

2026.08.05

1

18

Selenium常见报错排查与自动化测试稳定性
Selenium常见报错排查与自动化测试稳定性

本专题整理Selenium常见报错、驱动版本问题、元素找不到、点击失败、等待超时、浏览器闪退、脚本不稳定和测试用例维护方法。

2026.08.05

0

17

墨刀AI提示词教学
墨刀AI提示词教学

本合集由PHP中文网精心整理,为您提供全面的墨刀AI提示词教学。内容涵盖高质量原型撰写公式与实操窍门,助您轻松掌握AI设计工具。无论是零基础入门还是进阶技巧,都能让您快速上手,大幅提升产品设计与协作效率。

2026.08.04

31

21

墨刀AI完整入门
墨刀AI完整入门

PHP中文网为您倾力打造墨刀AI保姆级入门指南完整版!本合集从零基础讲起,涵盖AI生成原型、提示词优化、图片转原型及多轮对话等核心功能。无论您是新手还是进阶用户,都能轻松掌握产品设计全流程。快来PHP中文网,一键解锁高效设计技巧,让想法即刻成型!

2026.08.04

8

20

墨刀AI进阶技巧
墨刀AI进阶技巧

本合集由PHP中文网精心整理,为您提供墨刀AI核心进阶策略指南。内容涵盖高效提示词写作、原型智能生成与微调、结构化导图制作及行业分析报告输出等实战技巧。助您轻松掌握AI设计工具,大幅提升产品设计与团队协作效率。

2026.08.04

10

14

火山引擎实名认证失败怎么办
火山引擎实名认证失败怎么办

火山引擎实名认证失败可能与证件信息填写错误、姓名或企业信息不一致、证件照片不清晰、营业执照状态异常、手机号验证失败或审核资料不完整有关。本专题整理个人认证、企业认证、资料上传、审核退回、重新提交和认证不通过的常见处理方法。

2026.08.04

5

10

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.4万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 131.8万人学习