欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解Java獲取環(huán)境變量及系統(tǒng)屬性的方法

 更新時間:2016年05月04日 08:53:12   作者:oscar999  
這篇文章主要介紹了詳解Java獲取環(huán)境變量及系統(tǒng)屬性的方法,講解了System.getEnv()和System.getProperties()這兩個核心方法的使用,需要的朋友可以參考下

環(huán)境變量這個概念不陌生, 就是操作系統(tǒng)的環(huán)境變量。
系統(tǒng)變量就是java本身維護(hù)的變量。 通過 System.getProperty 的方式獲取。
對于不同的操作系統(tǒng)來說, 環(huán)境變量的處理可能會有一些不統(tǒng)一的地方, 比如說: 不區(qū)分大小寫 等等。

Java 獲取環(huán)境變量
Java 獲取環(huán)境變量的方式很簡單:
System.getEnv()  得到所有的環(huán)境變量
System.getEnv(key) 得到某個環(huán)境變量的值
 

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 系統(tǒng), 打印出來的值通過從 “我的電腦” 里看到的環(huán)境變量是一樣的。

Java 獲取和設(shè)置系統(tǒng)變量
Java 獲取環(huán)境變量的方式也很簡單:
System.getProperties()  得到所有的系統(tǒng)變量
System.getProperty(key)  得到某個系統(tǒng)變量的值
 

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()); 
} 

 系統(tǒng)變量除了可以獲取之外, 還可以通過System.setProperty(key, value)  的方式設(shè)置自己需要的系統(tǒng)變量。

默認(rèn)情況下, java 設(shè)置了哪些系統(tǒng)變量:

  • java.version Java 運(yùn)行時環(huán)境版本
  • java.vendor Java 運(yùn)行時環(huán)境供應(yīng)商
  • java.vendor.url Java 供應(yīng)商的 URL
  • java.home Java 安裝目錄
  • java.vm.specification.version Java 虛擬機(jī)規(guī)范版本
  • java.vm.specification.vendor Java 虛擬機(jī)規(guī)范供應(yīng)商
  • java.vm.specification.name Java 虛擬機(jī)規(guī)范名稱
  • java.vm.version Java 虛擬機(jī)實(shí)現(xiàn)版本
  • java.vm.vendor Java 虛擬機(jī)實(shí)現(xiàn)供應(yīng)商
  • java.vm.name Java 虛擬機(jī)實(shí)現(xiàn)名稱
  • java.specification.version Java 運(yùn)行時環(huán)境規(guī)范版本
  • java.specification.vendor Java 運(yùn)行時環(huán)境規(guī)范供應(yīng)商
  • java.specification.name Java 運(yùn)行時環(huán)境規(guī)范名稱
  • java.class.version Java 類格式版本號
  • java.class.path Java 類路徑
  • java.library.path 加載庫時搜索的路徑列表
  • java.io.tmpdir 默認(rèn)的臨時文件路徑
  • java.compiler 要使用的 JIT 編譯器的名稱
  • java.ext.dirs 一個或多個擴(kuò)展目錄的路徑
  • os.name 操作系統(tǒng)的名稱
  • os.arch 操作系統(tǒng)的架構(gòu)
  • os.version 操作系統(tǒng)的版本
  • file.separator 文件分隔符(在 UNIX 系統(tǒng)中是"/")
  • path.separator 路徑分隔符(在 UNIX 系統(tǒng)中是":")
  • line.separator 行分隔符(在 UNIX 系統(tǒng)中是"/n")
  • user.name 用戶的賬戶名稱
  • user.home 用戶的主目錄
  • user.dir 用戶的當(dāng)前工作目錄

補(bǔ)充
1 . 在.bat ;  .cmd 或  .sh 中會通過 set 的方式設(shè)置一些變量,
比如weblogic 的 setDomainEnv.cmd
set SUN_JAVA_HOME=C:\Oracle\Middleware\jdk160_21
這里設(shè)置的是環(huán)境變量
2. 在log4j 的配置中, 有時會配置log file 的產(chǎn)生路徑。
比如 ${LOG_DIR}/logfile.log, 這里的LOG_DIR 是被系統(tǒng)屬性的變量替換的。
3. 看一下java 源碼, 通過 System.getProperties() 的方式獲取系統(tǒng)變量時, 會有一個安全的檢查
 

  public static Properties getProperties() { 
SecurityManager sm = getSecurityManager(); 
    if (sm != null) { 
  sm.checkPropertiesAccess(); 
} 
 
return props; 
  } 

在 單個Java application  測試時, System 里的SecurityManager 是空的。
在Applet 運(yùn)行時, 會結(jié)合 .policy 這個文件來檢查權(quán)限。

如果給一個空的SecurityManager 會發(fā)現(xiàn)就會拋出權(quán)限異常。
 

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(); 
} 
System.getEnv()和System.getProperties()的區(qū)別
從概念上講,系統(tǒng)屬性 和環(huán)境變量 都是名稱與值之間的映射。兩種機(jī)制都能用來將用戶定義的信息傳遞給 Java 進(jìn)程。環(huán)境變量產(chǎn)生更多的全局效應(yīng),因?yàn)樗鼈儾粌H對Java 子進(jìn)程可見,而且對于定義它們的進(jìn)程的所有子進(jìn)程都是可見的。在不同的操作系統(tǒng)上,它們的語義有細(xì)微的差別,比如,不區(qū)分大小寫。因?yàn)檫@些原因,環(huán)境變量更可能有意料不到的副作用。最好在可能的地方使用系統(tǒng)屬性。環(huán)境變量應(yīng)該在需要全局效應(yīng)的時候使用,或者在外部系統(tǒng)接口要求使用環(huán)境變量時使用(比如 PATH)。
代碼如下:
public static void main(String [] args)
    {
       Map m = System.getenv();
       for ( Iterator it = m.keySet().iterator(); it.hasNext(); )
       {
           String key = (String ) it.next();
           String value = (String ) m.get(key);
           System.out.println(key +":" +value);
       }
       System.out.println( "--------------------------------------" );
       Properties p = System.getProperties();
       
       for ( Iterator it = p.keySet().iterator(); it.hasNext(); )
       {
           String key = (String ) it.next();
           String value = (String ) p.get(key);
           System.out.println(key +":" +value);
       }
    }
 
輸入如下:
ANT_HOME:D:/program/devel/ant
PROCESSOR_ARCHITECTURE:x86
LOGONSERVER://RJ-WEIJIANJUN
HOMEDRIVE:C:
CATALINA_HOME:D:/program/server/Tomcat5.5
DXSDK_DIR:d:/Program Files/Microsoft DirectX SDK (August 2008)/
VS80COMNTOOLS:C:/Program Files/Microsoft Visual Studio 8/Common7/Tools/
SESSIONNAME:Console
HOMEPATH:/Documents and Settings/Administrator
TMP:C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp
windir:C:/WINDOWS
PROCESSOR_IDENTIFIER:x86 Family 6 Model 15 Stepping 13, GenuineIntel
VS90COMNTOOLS:e:/Program Files/Microsoft Visual Studio 9.0/Common7/Tools/
SystemDrive:C:
USERPROFILE:C:/Documents and Settings/Administrator
PATHEXT:.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH
CommonProgramFiles:C:/Program Files/Common Files
NUMBER_OF_PROCESSORS:2
ComSpec:C:/WINDOWS/system32/cmd.exe
COMPUTERNAME:RJ-WEIJIANJUN
OS:Windows_NT
USERNAME:Administrator
CLIENTNAME:Console
TEMP:C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp
USERDOMAIN:RJ-WEIJIANJUN
ALLUSERSPROFILE:C:/Documents and Settings/All Users
lib:C:/Program Files/SQLXML 4.0/bin/
PROCESSOR_LEVEL:6
SystemRoot:C:/WINDOWS
ClusterLog:C:/WINDOWS/Cluster/cluster.log
APPDATA:C:/Documents and Settings/Administrator/Application Data
Path:C:/WINDOWS/system32;C:/WINDOWS;C:/WINDOWS/System32/Wbem;C:/Program Files/Microsoft SQL Server/80/Tools/Binn/;C:/Program Files/Microsoft SQL Server/90/DTS/Binn/;C:/Program Files/Microsoft SQL Server/90/Tools/binn/;C:/Program Files/Microsoft SQL Server/90/Tools/Binn/VSShell/Common7/IDE/;C:/Program Files/Microsoft Visual Studio 8/Common7/IDE/PrivateAssemblies/;D:/program/devel/flex_sdk2/bin;D:/program/devel/ant/bin;C:/Program Files/Java/jdk1.6.0_07/bin;%JONAS_ROOT%/bin/nt;d:/program/devel/ant/bin
JAVA_HOME:C:/Program Files/Java/jdk1.6.0_07
FP_NO_HOST_CHECK:NO
PROCESSOR_REVISION:0f0d
ProgramFiles:C:/Program Files
以下是property的輸出:
--------------------------------------
java.runtime.name:Java(TM) 2 Runtime Environment, Standard Edition
sun.boot.library.path:D:/Program Files/MyEclipse 6.5/jre/bin
java.vm.version:1.5.0_11-b03
java.vm.vendor:Sun Microsystems Inc.
java.vendor.url:http://java.sun.com/
path.separator:;
java.vm.name:Java HotSpot(TM) Client VM
file.encoding.pkg:sun.io
sun.java.launcher:SUN_STANDARD
user.country:CN
sun.os.patch.level:Service Pack 2
java.vm.specification.name:Java Virtual Machine Specification
user.dir:D:/dev/eclipse/mye65/workspace/jmx
java.runtime.version:1.5.0_11-b03
java.awt.graphicsenv:sun.awt.Win32GraphicsEnvironment
java.endorsed.dirs:D:/Program Files/MyEclipse 6.5/jre/lib/endorsed
os.arch:x86
java.io.tmpdir:C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/
line.separator:
 
java.vm.specification.vendor:Sun Microsystems Inc.
user.variant:
os.name:Windows 2003
sun.jnu.encoding:GBK
java.library.path:D:/Program Files/MyEclipse 6.5/jre/bin;.;C:/WINDOWS/system32;C:/WINDOWS;C:/WINDOWS/system32;C:/WINDOWS;C:/WINDOWS/System32/Wbem;C:/Program Files/Microsoft SQL Server/80/Tools/Binn/;C:/Program Files/Microsoft SQL Server/90/DTS/Binn/;C:/Program Files/Microsoft SQL Server/90/Tools/binn/;C:/Program Files/Microsoft SQL Server/90/Tools/Binn/VSShell/Common7/IDE/;C:/Program Files/Microsoft Visual Studio 8/Common7/IDE/PrivateAssemblies/;D:/program/devel/flex_sdk2/bin;D:/program/devel/ant/bin;C:/Program Files/Java/jdk1.6.0_07/bin;%JONAS_ROOT%/bin/nt;d:/program/devel/ant/bin
java.specification.name:Java Platform API Specification
java.class.version:49.0
sun.management.compiler:HotSpot Client Compiler
os.version:5.2
user.home:C:/Documents and Settings/Administrator
user.timezone:Asia/Shanghai
java.awt.printerjob:sun.awt.windows.WPrinterJob
file.encoding:GBK
java.specification.version:1.5
java.class.path:D:/dev/eclipse/mye65/workspace/jmx/bin;D:/program/lib/jmx/jmxtools.jar;D:/program/lib/log/commons-logging-1.1.1.jar;D:/program/lib/log/log4j-1.2.15.jar;D:/program/lib/registry/registry.jar
user.name:Administrator
java.vm.specification.version:1.0
java.home:D:/Program Files/MyEclipse 6.5/jre
sun.arch.data.model:32
user.language:zh
java.specification.vendor:Sun Microsystems Inc.
awt.toolkit:sun.awt.windows.WToolkit
java.vm.info:mixed mode
java.version:1.5.0_11
java.ext.dirs:D:/Program Files/MyEclipse 6.5/jre/lib/ext
sun.boot.class.path:D:/Program Files/MyEclipse 6.5/jre/lib/rt.jar;D:/Program Files/MyEclipse 6.5/jre/lib/i18n.jar;D:/Program Files/MyEclipse 6.5/jre/lib/sunrsasign.jar;D:/Program Files/MyEclipse 6.5/jre/lib/jsse.jar;D:/Program Files/MyEclipse 6.5/jre/lib/jce.jar;D:/Program Files/MyEclipse 6.5/jre/lib/charsets.jar;D:/Program Files/MyEclipse 6.5/jre/classes
java.vendor:Sun Microsystems Inc.
file.separator:/
java.vendor.url.bug:http://java.sun.com/cgi-bin/bugreport.cgi
sun.io.unicode.encoding:UnicodeLittle
sun.cpu.endian:little
sun.desktop:windows
sun.cpu.isalist:pentium_pro+mmx pentium_pro pentium+mmx pentium i486 i386 i86

相關(guān)文章

  • SpringAop切入點(diǎn)execution表達(dá)式的深入講解

    SpringAop切入點(diǎn)execution表達(dá)式的深入講解

    Spring AOP 可能會經(jīng)常使用 execution切入點(diǎn)指示符,下面這篇文章主要給大家介紹了關(guān)于SpringAop切入點(diǎn)execution表達(dá)式的相關(guān)資料,需要的朋友可以參考下
    2021-08-08
  • SpringBoot集成P6spy實(shí)現(xiàn)自定義SQL日志打印

    SpringBoot集成P6spy實(shí)現(xiàn)自定義SQL日志打印

    本文主要介紹了SpringBoot集成P6spy實(shí)現(xiàn)自定義SQL日志打印,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • SpringBoot中yml多環(huán)境配置的3種方法

    SpringBoot中yml多環(huán)境配置的3種方法

    這篇文章主要給大家介紹了SpringBoot中yml多環(huán)境配置的3種方法,文中有詳細(xì)的代碼示例供大家參考,對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2023-10-10
  • Mybatis三種批量插入數(shù)據(jù)的方式

    Mybatis三種批量插入數(shù)據(jù)的方式

    這篇文章主要介紹了Mybatis的三種批量插入方式,幫助大家更好的理解和學(xué)習(xí)使用Java,感興趣的朋友可以了解下
    2021-04-04
  • 淺談Java模板引擎性能對比

    淺談Java模板引擎性能對比

    本篇文章主要介紹了淺談Java模板引擎性能對比 ,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • Java 線程池詳解及創(chuàng)建簡單實(shí)例

    Java 線程池詳解及創(chuàng)建簡單實(shí)例

    這篇文章主要介紹了Java 線程池詳解及創(chuàng)建簡單實(shí)例的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • SpringBoot使用Mybatis&Mybatis-plus文件映射配置方法

    SpringBoot使用Mybatis&Mybatis-plus文件映射配置方法

    這篇文章主要介紹了SpringBoot使用Mybatis&Mybatis-plus文件映射配置方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-05-05
  • Spring boot 數(shù)據(jù)庫連接斷線重連問題

    Spring boot 數(shù)據(jù)庫連接斷線重連問題

    這篇文章主要介紹了Spring boot 數(shù)據(jù)庫連接斷線重連問題,需要的朋友可以參考下
    2017-06-06
  • java單鏈表使用總結(jié)

    java單鏈表使用總結(jié)

    這篇文章主要為大家詳細(xì)介紹了java單鏈表使用總結(jié),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • Spring Boot2讀取配置常用方法代碼實(shí)例

    Spring Boot2讀取配置常用方法代碼實(shí)例

    這篇文章主要介紹了Spring Boot2讀取配置常用方法代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-11-11

最新評論