java 获取系统变量(环境变量和设置变量)
前言
环境变量这个概念不陌生, 就是操作系统的环境变量。
系统变量就是java本身维护的变量。 通过 System.getProperty 的方式获取。
对于不同的操作系统来说, 环境变量的处理可能会有一些不统一的地方, 比如说: 不区分大小写 等等。
Java 获取环境变量
Java 获取环境变量的方式很简单:
System.getEnv() 得到所有的环境变量
System.getEnv(key) 得到某个环境变量的值
Map map = System.getenv();
Iterator it = map.entrySet().iterator();
while(it.hasNext())
{
Entry entry = (Entry)it.next();
System.out.print(entry.getKey()+"=");
System.out.println(entry.getValue());
}
如果是windows 系统, 打印出来的值通过从 “我的电脑” 里看到的环境变量是一样的。
Java 获取和设置系统变量
Java 获取环境变量的方式也很简单:
System.getProperties() 得到所有的系统变量
System.getProperty(key) 得到某个系统变量的值
Properties properties = System.getProperties();
Iterator it = properties.entrySet().iterator();
while(it.hasNext())
{
Entry entry = (Entry)it.next();
System.out.print(entry.getKey()+"=");
System.out.println(entry.getValue());
}
系统变量除了可以获取之外, 还可以通过System.setProperty(key, value) 的方式设置自己需要的系统变量。
默认情况下, java 设置了哪些系统变量:
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 用户的当前工作目录
补充
1 . 在.bat ; .cmd 或 .sh 中会通过 set 的方式设置一些变量,
比如weblogic 的 setDomainEnv.cmd
set SUN_JAVA_HOME=C:\Oracle\Middleware\jdk160_21
这里设置的是环境变量
2. 在log4j 的配置中, 有时会配置log file 的产生路径。
比如 ${LOG_DIR}/logfile.log, 这里的LOG_DIR 是被系统属性的变量替换的。
3. 看一下java 源码, 通过 System.getProperties() 的方式获取系统变量时, 会有一个安全的检查
public static Properties getProperties() {
SecurityManager sm = getSecurityManager();
if (sm != null) {
sm.checkPropertiesAccess();
}
return props;
}
在 单个Java application 测试时, System 里的SecurityManager 是空的。
在Applet 运行时, 会结合 .policy 这个文件来检查权限。
如果给一个空的SecurityManager 会发现就会抛出权限异常。
public static void main(String[] args) {
// TODO Auto-generated method stub
System.setSecurityManager(new SecurityManager());
//SecurityManager sm = System.getSecurityManager();
//System.out.println(sm);
System.getSecurityManager().checkPropertiesAccess();
}
java 获取系统变量(环境变量和设置变量)的更多相关文章
- java获取系统指定时间年月日
java获取系统指定时间年月日 private String setDateTime(String falg) { Calendar c = Calendar.getInstance(); c.set ...
- java 获取系统当前时间并格式化
java 获取系统当前时间并格式化 CreateTime--2018年5月9日11:41:00 Author:Marydon 实现方式有三种 updateTime--2018年7月23日09点32 ...
- Java获取系统时间少了八个小时
Java获取系统时间少了八个小时 今天忽然遇到需要获取当前时间的问题,我向来谨慎,先测试获取到的系统时间是否正确,结果竟然发现少了八个小时,晕死了,记得之前在页面用javascript获取过当前时间, ...
- java 获取系统变量(环境变量和环境变量)
前言 环境变量这个概念不陌生, 就是操作系统的环境变量. 系统变量就是java本身维护的变量. 通过 System.getProperty 的方式获取. 对于不同的操作系统来说. 环境变量的处理可能会 ...
- Java获取系统属性及环境变量
当程序中需要使用与操作系统相关的变量(例如:文件分隔符.换行符)时,Java提供了System类的静态方法getenv()和getProperty()用于返回系统相关的变量与属性,getenv方法返回 ...
- postman—环境切换和设置变量
postman提供了environment管理功能,想要在多个环境中测试,比如在测试环境.灰度环境.生产环境等,只需要用同样的接口,切换下环境即可,非常方便.具体步骤: 一.切换环境 1.点击界面右上 ...
- Java知识系统回顾整理01基础03变量01变量定义
定义: 变量:用来命名一个数据的标识符 一.什么是变量? 用具体实例定义变量 变量的定义是: 用来命名一个数据的标识符 1949 这是一个数字,代表某年 如果要命名这个数字,在java里就会写成: i ...
- 解决java获取系统时间差8个小时 专题
在WIN7下发现一些Java的程序获取系统时间比真实时间差了8个小时,怀疑是Java程序沿用了低版本的JDK,获取时间时取的GSM 0时区,而中国是GSM +8,所以查了8个小时,解决办法如下: 修改 ...
- Java获取系统日期时间
方法一:利用Calendar类来获取当前日期和时间,代码如下: /** * 获取系统时间 * @return */ public String getDate(){ Calendar calendar ...
随机推荐
- vue + vuex 表单处理
使用场景:在一个表单中,各项数据提交后需要重置表单中各<input>元素的值为空. 组件中关联: <template> <el-form ref="form&q ...
- JavaScript学习笔记(高级部分—02)
47.switch语句的语法: switch (i) { case 20: alert("20"); break; case 30: alert("30"); ...
- hive优化要点总结
个人认为总体两种思想: 1.让服务器尽可能的多做事情,榨干服务器资源,以最高系统吞吐量为目标 再好的硬件没有充分利用起来,都是白扯淡. 比如: (1) 启动一次job尽可能的多做事情,一个job能完 ...
- Zend Framework学习日记(2)--HelloWorld篇(转)
Zend Framework学习日记(2)--HelloWorld篇 这一篇主要演示如何用zf命令行工具建立一个基于Zend Framework框架的工程,也是我初学Zend Framework的小练 ...
- Java基础知识强化37:StringBuffer类之StringBuffer的构造方法
1. StringBuffer的构造方法: (1)StringBuffer(): (2)StringBuffer(CharSequence seq): (3)StringBuffer(int capa ...
- Pythn中的super用法
在Python类的方法(method)中,要调用父类的某个方法,在Python 2.2以前,通常的写法如代码段1: 代码段1: 代码如下: class A: def __init__(self): p ...
- CSS 特殊样式设置集合
1. 父窗口宽度不定,要求内部两个子块, 第一个子块宽度固定,第二个子块宽度自适应. 第一个子块宽度固定,定位为绝对定位 position:absolute; 第二个子块设置margin-left即 ...
- CSS3动画(360度旋转、旋转放大、放大、移动)
Title div { width: 120px; height: 120px; line-height: 120px; margin: 20px; background-color: #5cb85c ...
- WPF资源字典使用
资源字典出现的初衷就在于可以实现多个项目之间的共享资源,资源字典只是一个简单的XAML文档,该文档除了存储希望使用的资源之外,不做任何其它的事情. 1. 创建资源字典 创建资源字典的过程比较简单,只 ...
- Objective-C 类型判断
可以通过 isKindOfClass 判断对象的类型 @interface A : NSObject @end @implementation A @end //// @interface AA : ...