浅谈System.getenv()和System.getProperty()的区别

 更新时间:2021年06月19日 14:18:11   作者:一步一台阶  
这篇文章主要介绍了System.getenv()和System.getProperty()的区别,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

最近遇到一个需求,服务器实例需要获取当前的环境变量。经过查资料,发现环境变量可以在两个地方设置。

一、在系统层面设置环境变量

在系统层面设置环境变量,之前我们应该都操作过,以windows系统为例

System.getenv()可以获取的在这里设置的变量。

二、在java虚拟机层面设置环境变量

个人理解,System.getProperty()可以获取在JVM 层面的变量,有些变量在JVM启动后,就内置了,如:

参数值 参数含义
java.version Java 运行时环境版本
java.vendor Java 运行时环境供应商
java.vendor.url Java 供应商的 URL
java.home Java 安装目录
java.vm.specification.version Java 虚拟机规范版本
java.vm.specification.vendor Java 虚拟机规范供应商
java.vm.specification.name Java 虚拟机规范名称
java.vm.version Java 虚拟机实现版本
java.vm.vendor Java 虚拟机实现供应商
java.vm.name Java 虚拟机实现名称
java.specification.version Java 运行时环境规范版本
java.specification.vendor Java 运行时环境规范供应商
java.specification.name Java 运行时环境规范名称
java.class.version Java 类格式版本号
java.class.path Java 类路径
java.library.path 加载库时搜索的路径列表
java.io.tmpdir 默认的临时文件路径
java.compiler 要使用的 JIT 编译器的名称
java.ext.dirs 一个或多个扩展目录的路径
os.name 操作系统的名称
os.arch 操作系统的架构
os.version 操作系统的版本
file.separator 文件分隔符(在 UNIX 系统中是“/” )
path.separator 路径分隔符(在 UNIX 系统中是“:” )
line.separator 行分隔符(在 UNIX 系统中是“/n” )
user.name 用户的账户名称
user.home 用户的主目录
user.dir 用户的当前工作目录

还可以在代码层面,通过System.setProperty(key, value)把值设置进去。

或者web容器层面,在服务器容器启动时,把变量加进去,最终会传递给JVM。

例如我们公司之前用的,通过System.getProperty("weblogic.Name")获取服务的实例名称。

个人理解就是weblogic起启动服务是初始化到JVM中的。

或者可以直接在eclipse中的VM arguments添加,这样在该程序运行时,就自动生效了。

如下图:

System.getenv(String name)方法的意义和用法

最近工程里用到

String path = System.getenv(“config_path”);

这样取路径的方法。记录一下。

1.在windows中config_path指的是系统的环境变量。如:

此时取出来的path为:D:\work。有了这个路径就可以做一些读取文件的操作了。

2.在linux中config_path指的是在/etc/profile文件末尾配置环境变量 ​export config_path=XXX/XXX。(XXX/XXX为文件地址,退出保存,并​source /etc/profile​生效)。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • SpringBoot Cache缓存概念讲解

    SpringBoot Cache缓存概念讲解

    这篇文章主要介绍了Springboot cache缓存,使用缓存最关键的一点就是保证缓存与数据库的数据一致性,本文给大家介绍最常用的缓存操作模式,对Springboot cache缓存操作流程感兴趣的朋友一起看看吧
    2022-12-12
  • mybatis关系映射之一对多和多对一

    mybatis关系映射之一对多和多对一

    今天小编就为大家分享一篇关于mybatis关系映射之一对多和多对一,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-01-01
  • 详解springboot整合ueditor踩过的坑

    详解springboot整合ueditor踩过的坑

    这篇文章主要介绍了详解springboot整合ueditor踩过的坑,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • 你都理解创建线程池的参数吗?

    你都理解创建线程池的参数吗?

    这篇文章主要介绍了创建线程池参数,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • JAVA Spring中让人头痛的JAVA大事务问题要如何解决你知道吗

    JAVA Spring中让人头痛的JAVA大事务问题要如何解决你知道吗

    这篇文章主要介绍了Java Spring事务使用及验证过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2021-09-09
  • 教你用Java实现一个简单的代码生成器

    教你用Java实现一个简单的代码生成器

    今天给大家带来的是关于Java的相关知识,文章围绕着如何用Java实现一个简单的代码生成器展开,文中有非常详细的介绍及代码示例,需要的朋友可以参考下
    2021-06-06
  • Java关于IO流的全面介绍

    Java关于IO流的全面介绍

    下面小编就为大家带来一篇Java关于IO流的全面介绍。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-08-08
  • Java的后台文件夹下文件的遍历完整代码

    Java的后台文件夹下文件的遍历完整代码

    这篇文章主要介绍了Java的后台文件夹下文件的遍历完整代码,首先分享了java中遍历一个文件夹里边的所有文件,然后介绍了用Java遍历一个文件夹并获取它里面的所有内容详细代码,具有一定借鉴价值,需要的朋友可以参考下。
    2017-12-12
  • java调用oracle分页存储过程示例

    java调用oracle分页存储过程示例

    这篇文章主要介绍了java调用oracle分页存储过程,需要的朋友可以参考下
    2014-03-03
  • Spring实战之容器中的工程Bean用法示例

    Spring实战之容器中的工程Bean用法示例

    这篇文章主要介绍了Spring实战之容器中的工程Bean用法,结合实例形式分析了Sring框架容器中的工程Bean相关配置、使用操作技巧,需要的朋友可以参考下
    2019-11-11

最新评论