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

网友投稿 258 2023-01-05

浅谈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​生效)。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:通过weblogic API解析如何获取weblogic中服务的IP和端口操作
下一篇:java实现统一异常处理的示例
相关文章

 发表评论

暂时没有评论,来抢沙发吧~