前言

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

系统变量就是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. MVC过滤器的详细讲解和示范样本

    MVC共有4个过滤器:ActionFilter(方法过滤器),ResultFilter(结果过滤器.感觉是不是很好,所以称它为),AuthorizationFilter(授权过滤器).Exceptio ...

  2. c# 获取某个对象的[公有属性]的名称,类型,值

    /// <summary> /// 获取某个对象的[公有属性]的名称,类型,值 /// </summary> /// <typeparam name="T&qu ...

  3. 认识Require

    1. 加载require.js文件 <script type="text/javascript" src="js/require.js" data-mai ...

  4. WPF技术触屏上的应用系列(六): 视觉冲击、超炫系统主界面、系统入口效果实现

    原文:WPF技术触屏上的应用系列(六): 视觉冲击.超炫系统主界面.系统入口效果实现 去年某客户单位要做个大屏触屏应用,要对档案资源进行展示之用.客户端是Window7操作系统,54寸大屏电脑电视一体 ...

  5. Android Framework 其中A记录

    一个简短的引论 以往的研究太偏应用层的功能,实现了,原则上不进入非常理解,现在,研究人员framework该框架层. 创纪录的 1.下载源代码,文件夹例如以下: 2.Android系统的层次例如以下: ...

  6. UVA - 12001 UVa Panel Discussion

    Description  UVa Panel Discussion  The UVa online judge team is arranging a panel discussion for the ...

  7. Oracle 六闪回技术,flashback

    Flashback 技术基于Undo segment基于内容的, 因此,限制UNDO_RETENTON参数. 要使用flashback 特征,您必须启用自己主动撤销管理表空间. 在Oracle 11g ...

  8. 跳转表C语言,不比redis版本号

    本来跳表的原理很easy的(相对于红 - 黑树),但国庆间歇性地搞5天才捞起来-- 我学会了跳之前写表的链式结构完全基于,我看着写的过程中redis实现,它的每个键列都是用数组来表示的.细致想了想发现 ...

  9. Android剪裁图片简单的方法

    /** * 按正方形裁切图片 */ public static Bitmap ImageCrop(Bitmap bitmap) { int w = bitmap.getWidth(); // 得到图片 ...

  10. LINQ之路(2):LINQ to SQL本质

    LINQ之路(2):LINQ to SQL本质 在前面一篇文章中回顾了LINQ基本语法规则,在本文将介绍LINQ to SQL的本质.LINQ to SQL是microsoft针对SQL Server ...