前言

环境变量这个概念不陌生, 就是操作系统的环境变量。

系统变量就是java本身维护的变量。 通过 System.getProperty 的方式获取。

对于不同的操作系统来说。 环境变量的处理可能会有一些不统一的地方, 比方说: 不区分大写和小写 等等。

Java 获取环境变量

Java 获取环境变量的方式非常easy:

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 获取环境变量的方式也非常easy:

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 获取系统变量(环境变量和环境变量)的更多相关文章

  1. java获取系统指定时间年月日

    java获取系统指定时间年月日 private String setDateTime(String falg) { Calendar c = Calendar.getInstance(); c.set ...

  2. java 获取系统当前时间并格式化

      java 获取系统当前时间并格式化 CreateTime--2018年5月9日11:41:00 Author:Marydon 实现方式有三种 updateTime--2018年7月23日09点32 ...

  3. Java获取系统时间少了八个小时

    Java获取系统时间少了八个小时 今天忽然遇到需要获取当前时间的问题,我向来谨慎,先测试获取到的系统时间是否正确,结果竟然发现少了八个小时,晕死了,记得之前在页面用javascript获取过当前时间, ...

  4. java 获取系统变量(环境变量和设置变量)

    前言 环境变量这个概念不陌生, 就是操作系统的环境变量. 系统变量就是java本身维护的变量. 通过 System.getProperty 的方式获取. 对于不同的操作系统来说, 环境变量的处理可能会 ...

  5. Java获取系统属性及环境变量

    当程序中需要使用与操作系统相关的变量(例如:文件分隔符.换行符)时,Java提供了System类的静态方法getenv()和getProperty()用于返回系统相关的变量与属性,getenv方法返回 ...

  6. Java知识系统回顾整理01基础03变量01变量定义

    定义: 变量:用来命名一个数据的标识符 一.什么是变量? 用具体实例定义变量 变量的定义是: 用来命名一个数据的标识符 1949 这是一个数字,代表某年 如果要命名这个数字,在java里就会写成: i ...

  7. 解决java获取系统时间差8个小时 专题

    在WIN7下发现一些Java的程序获取系统时间比真实时间差了8个小时,怀疑是Java程序沿用了低版本的JDK,获取时间时取的GSM 0时区,而中国是GSM +8,所以查了8个小时,解决办法如下: 修改 ...

  8. Java获取系统默认浏览器打开链接

    package com.ylx.test; public class DesktopBrowers { public static void main(String[] args) { // 判断当前 ...

  9. Java获取系统日期时间

    方法一:利用Calendar类来获取当前日期和时间,代码如下: /** * 获取系统时间 * @return */ public String getDate(){ Calendar calendar ...

随机推荐

  1. 11gR2更换OCR和VOTE

    11gR2开始,OCR和VOTE它们被存储在ASM磁盘组,因此,更换OCR有两种方法,第一是使用ASM磁盘组drop disk数据重组后,另一种方法是OCR迁移到另一个磁盘组 第一种:add disk ...

  2. DM8168 CameraLink 视频噪点问题解决

    几天前写过FPGA採集LVDS视频(噪点去除),当时的情况是CameraLink视频出现了非常多噪点,不堪入目,硬件方面没有找到毛病,仅仅能是用硬件描写叙述语言对採集前端的FPGA又一次进行了处理,效 ...

  3. C#使用SqlBulkCopy将DataTable写入数据库的表中(表不存在则创建新表,数据存在则更新,不存在则插入)

    原文:.net使用SqlBulkCopy导入数据(创建新表) .net2.0后ado.net提供了一个快速导入sqlserver的方法sqlbulkcopy.导入效率非常高.  包装了一个简单的sql ...

  4. 使用python+django+twistd 开发自己的操作和维护系统的一个

    许多开源操作系统和维护系统,例nagios.zabbix.cati等等,但是,当他们得到的时间自己的个性化操作和维护需求,始终无力! 最近的一项研究python.因此,我们认为python+djang ...

  5. String和StringBuffer 常用方法总结

     String和StringBuffer 常用方法总结 一.不可变长度String 1.字符串---->char数组 char[] chars=str.toCharArray(); 2.字符串中 ...

  6. Android - 用Fragments实现动态UI - 和其他Fragments通信

    为了重用Fragment UI组件,应该把每个都设计为它自有的模块组件并且有自己的布局和行为.一旦定义了这些可重用的Fragment,你可以把它们和一个activity关联然后和程序的逻辑一起实现上层 ...

  7. MaidSafe.net,一个完全去中心的化的云存储系统

    MaidSafe.net,一个完全去中心的化的云存储系统 (类似Bitcloud系统) 本帖最后由 tbit 于 2014-3-26 16:11 编辑 已经开发了8年,最近即将推出测试和IPO.开放源 ...

  8. charles抓包

    charles使用教程指南 charles使用教程指南 前言 移动APP抓包 PC端抓包 查看模式 其他功能 问题汇总 1. 前言: Charles是一款抓包修改工具,相比起burp,charles具 ...

  9. Windows无法启动OracleOraDb10g_home1TNSListener维修,1错误067

    Oracle服务无法启动,据报:Windows无法启动OracleOraDb10g_home1TNSListener维修,错误 1067:这个过程意外终止. 在网上找了好久也没弄好.说什么环境变量的又 ...

  10. 单元测试React

    React单元测试——十八般兵器齐上阵,环境构建篇 一个完整.优秀的项目往往离不开单元测试的环节,就 github 上的主流前端项目而言,基本都有相应的单元测试模块. 就 React 的项目来说,一套 ...