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

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

本文主要介绍System.getenv()和System.getProperty()的区别,有很好的参考价值。希望对大家有帮助。如有错误或不足之处,请不吝赐教。

最近,遇到了一个需求,服务器实例需要获得当前的环境变量。查了一下数据,发现环境变量可以设置在两个地方。

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

在系统级设置环境变量,我们应该都做过,以windows系统为例。

这里设置的变量可以通过System.getenv()获得。

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

我个人理解System.getProperty()可以获取JVM级别的变量,有些变量是在JVM启动后内置的,比如:

参数值

参数含义

java.version

Java运行时环境版本

java .供应商

Java运行时环境供应商

java .供应商. url

Java供应商的URL

java.home

Java安装目录

java.vm .规范.版本

Java虚拟机规范版本

java.vm .规范.供应商

Java虚拟机规范提供程序

java.vm .规范.名称

Java虚拟机规范名称

java.vm .版本

Java虚拟机实现版本

供应商

Java虚拟机实现提供程序

java.vm.name

Java虚拟机实现名称

java .规范.版本

Java运行时环境规范版本

java .规范.供应商

Java运行时环境规范供应商

java.specification.name

Java运行时环境规范名称

java.class.version

Java类格式版本号

java.class.path

Java类路径

java.library.path

加载库时搜索的路径列表

java.io.tmpdir

的默认临时文件路径

java .编译器

要使用的JIT编译器的名称。

java.ext.dirs

一个或多个扩展目录的路径

os.name

操作系统的名称

os.arch

操作系统的架构

操作系统.版本

操作系统的版本

文件.分隔符

文件分隔符(在UNIX系统中为“/”)

路径.分隔符

路径分隔符(在UNIX系统中为“:”)

分隔线

行分隔符(在UNIX系统中为“/n”)

用户名

用户的帐户名。

user.home

用户的主目录

用户目录

用户的当前工作目录

也可以通过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是指系统的环境变量。比如:

这时,拿出来的路径是:D:work。有了这个路径,你就可以做一些读取文件的操作。

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

以上个人经历,希望能给大家一个参考,也希望大家多多支持我们。

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