一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務(wù)器之家 - 編程語言 - JAVA教程 - 詳解Java獲取環(huán)境變量及系統(tǒng)屬性的方法

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

2020-04-24 12:25oscar999 JAVA教程

這篇文章主要介紹了詳解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 運行時環(huán)境版本

  • java.vendor Java 運行時環(huán)境供應(yīng)商

  • java.vendor.url Java 供應(yīng)商的 URL

  • java.home Java 安裝目錄

  • java.vm.specification.version Java 虛擬機規(guī)范版本

  • java.vm.specification.vendor Java 虛擬機規(guī)范供應(yīng)商

  • java.vm.specification.name Java 虛擬機規(guī)范名稱

  • java.vm.version Java 虛擬機實現(xiàn)版本

  • java.vm.vendor Java 虛擬機實現(xiàn)供應(yīng)商

  • java.vm.name Java 虛擬機實現(xiàn)名稱

  • java.specification.version Java 運行時環(huán)境規(guī)范版本

  • java.specification.vendor Java 運行時環(huán)境規(guī)范供應(yīng)商

  • java.specification.name Java 運行時環(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)前工作目錄

 

補充
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 運行時, 會結(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)境變量 都是名稱與值之間的映射。兩種機制都能用來將用戶定義的信息傳遞給 Java 進(jìn)程。環(huán)境變量產(chǎn)生更多的全局效應(yīng),因為它們不僅對Java 子進(jìn)程可見,而且對于定義它們的進(jìn)程的所有子進(jìn)程都是可見的。在不同的操作系統(tǒng)上,它們的語義有細(xì)微的差別,比如,不區(qū)分大小寫。因為這些原因,環(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

 

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产资源中文字幕 | 美女做又爽又黄又猛 | 色多多视频网站 | 视频一区二区三区在线观看 | 日本老妇成熟 | 福利视频一区二区牛牛 | 亚洲va欧美va天堂v国产综合 | 成人网欧美亚洲影视图片 | 成人午夜毛片 | 久久水蜜桃亚洲AV无码精品偷窥 | 4hu影院永久在线播放 | 福利视频导航大全 | 国产精品自拍一区 | 日韩精品一区二区三区免费视频 | 久久精品无码一区二区日韩av | 欧美不卡一区二区三区免 | 黄a在线观看 | 日本女人www| 久久WWW免费人成一看片 | xx18-19xxxxhd| 国产激情一区二区三区四区 | 亚洲 综合 欧美在线视频 | 国产欧美日韩一区二区三区在线 | 男人天堂官方网站 | 亚洲卡一卡2卡三卡4卡无卡三 | 亚洲AV精品一区二区三区不卡 | 男人使劲躁女人视频免费 | 999久久久免费精品国产牛牛 | 国产色网| 免费在线看 | 欧美一级片免费看 | 黄瓜视频黄版 | 教师系列 大桥未久在线 | 色老板视频在线观看 | 无人区尖叫之夜美女姐姐视频 | 国产亚洲精品视频中文字幕 | 九九大香尹人视频免费 | 欧美大片一区 | 久久国产热视频99rev6 | 日本嫩模 | 俄罗斯一级毛片免费播放 |