国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

詳解Java獲取環境變量及系統屬性的方法

2019-11-26 14:23:22
字體:
來源:轉載
供稿:網友

環境變量這個概念不陌生, 就是操作系統的環境變量。
系統變量就是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(); } 
System.getEnv()和System.getProperties()的區別
從概念上講,系統屬性 和環境變量 都是名稱與值之間的映射。兩種機制都能用來將用戶定義的信息傳遞給 Java 進程。環境變量產生更多的全局效應,因為它們不僅對Java 子進程可見,而且對于定義它們的進程的所有子進程都是可見的。在不同的操作系統上,它們的語義有細微的差別,比如,不區分大小寫。因為這些原因,環境變量更可能有意料不到的副作用。最好在可能的地方使用系統屬性。環境變量應該在需要全局效應的時候使用,或者在外部系統接口要求使用環境變量時使用(比如 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/antPROCESSOR_ARCHITECTURE:x86LOGONSERVER://RJ-WEIJIANJUNHOMEDRIVE:C:CATALINA_HOME:D:/program/server/Tomcat5.5DXSDK_DIR:d:/Program Files/Microsoft DirectX SDK (August 2008)/VS80COMNTOOLS:C:/Program Files/Microsoft Visual Studio 8/Common7/Tools/SESSIONNAME:ConsoleHOMEPATH:/Documents and Settings/AdministratorTMP:C:/DOCUME~1/ADMINI~1/LOCALS~1/Tempwindir:C:/WINDOWSPROCESSOR_IDENTIFIER:x86 Family 6 Model 15 Stepping 13, GenuineIntelVS90COMNTOOLS:e:/Program Files/Microsoft Visual Studio 9.0/Common7/Tools/SystemDrive:C:USERPROFILE:C:/Documents and Settings/AdministratorPATHEXT:.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSHCommonProgramFiles:C:/Program Files/Common FilesNUMBER_OF_PROCESSORS:2ComSpec:C:/WINDOWS/system32/cmd.exeCOMPUTERNAME:RJ-WEIJIANJUNOS:Windows_NTUSERNAME:AdministratorCLIENTNAME:ConsoleTEMP:C:/DOCUME~1/ADMINI~1/LOCALS~1/TempUSERDOMAIN:RJ-WEIJIANJUNALLUSERSPROFILE:C:/Documents and Settings/All Userslib:C:/Program Files/SQLXML 4.0/bin/PROCESSOR_LEVEL:6SystemRoot:C:/WINDOWSClusterLog:C:/WINDOWS/Cluster/cluster.logAPPDATA:C:/Documents and Settings/Administrator/Application DataPath: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/binJAVA_HOME:C:/Program Files/Java/jdk1.6.0_07FP_NO_HOST_CHECK:NOPROCESSOR_REVISION:0f0dProgramFiles:C:/Program Files
以下是property的輸出:
--------------------------------------java.runtime.name:Java(TM) 2 Runtime Environment, Standard Editionsun.boot.library.path:D:/Program Files/MyEclipse 6.5/jre/binjava.vm.version:1.5.0_11-b03java.vm.vendor:Sun Microsystems Inc.java.vendor.url:http://java.sun.com/path.separator:;java.vm.name:Java HotSpot(TM) Client VMfile.encoding.pkg:sun.iosun.java.launcher:SUN_STANDARDuser.country:CNsun.os.patch.level:Service Pack 2java.vm.specification.name:Java Virtual Machine Specificationuser.dir:D:/dev/eclipse/mye65/workspace/jmxjava.runtime.version:1.5.0_11-b03java.awt.graphicsenv:sun.awt.Win32GraphicsEnvironmentjava.endorsed.dirs:D:/Program Files/MyEclipse 6.5/jre/lib/endorsedos.arch:x86java.io.tmpdir:C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/line.separator: java.vm.specification.vendor:Sun Microsystems Inc.user.variant:os.name:Windows 2003sun.jnu.encoding:GBKjava.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/binjava.specification.name:Java Platform API Specificationjava.class.version:49.0sun.management.compiler:HotSpot Client Compileros.version:5.2user.home:C:/Documents and Settings/Administratoruser.timezone:Asia/Shanghaijava.awt.printerjob:sun.awt.windows.WPrinterJobfile.encoding:GBKjava.specification.version:1.5java.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.jaruser.name:Administratorjava.vm.specification.version:1.0java.home:D:/Program Files/MyEclipse 6.5/jresun.arch.data.model:32user.language:zhjava.specification.vendor:Sun Microsystems Inc.awt.toolkit:sun.awt.windows.WToolkitjava.vm.info:mixed modejava.version:1.5.0_11java.ext.dirs:D:/Program Files/MyEclipse 6.5/jre/lib/extsun.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/classesjava.vendor:Sun Microsystems Inc.file.separator:/java.vendor.url.bug:http://java.sun.com/cgi-bin/bugreport.cgisun.io.unicode.encoding:UnicodeLittlesun.cpu.endian:littlesun.desktop:windowssun.cpu.isalist:pentium_pro+mmx pentium_pro pentium+mmx pentium i486 i386 i86
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 平度市| 建德市| 宜宾县| 法库县| 抚松县| 清丰县| 庄河市| 罗平县| 崇左市| 博乐市| 吉水县| 博爱县| 陕西省| 温泉县| 禹州市| 无极县| 青神县| 灯塔市| 杂多县| 岳阳县| 太原市| 双牌县| 东莞市| 荔波县| 安吉县| 微山县| 琼海市| 公安县| 巴南区| 兰州市| 阿克| 拉孜县| 昌吉市| 疏附县| 濮阳市| 比如县| 黄山市| 茶陵县| 旺苍县| 怀化市| 东港市|