java中獲取環境變量


分為獲取java自身的一些環境變量和和操作系統相關的環境變量。

  • 獲取JVM相關的一些變量

在運行時設置一個環境變量 debug 為 true: java -Ddebug=true YourClass
在程序中設置一個環境變量 debug 為 true: System.setProperty( "debug", "true" );
獲取一個環境變量 debug : String debug = System.getProperty( "debug" );

下表中列出了一部分環境變量,這些是 Java 已經定義好的,可以在程序中通過 System.getProperty( "key" ) 來獲取,更多的環境變量請參閱 JDK 文檔。

 

屬性名 描 述
java.version Java 運行時版本
java.home Java 的安裝目錄
java.class.version Java 類格式的版本號
java.class.path Java 類的查找路徑
java.io.tmpdir 默認的臨時目錄
java.compiler Java 所使用的及時編譯器
java.ext.dirs Java 擴展包的目錄
os.name 操作系統的名稱
os.arch 操作系統的體系結構
os.version 操作系統的版本
file.separator 文件分隔符(Unix 下為'/')
path.separator 路徑分隔符(Unix 下為':')
line.separator 換行符(Unix 下為'/n')
user.name 用戶帳號名
user.home 用戶目錄
user.dir 用戶當前的工作目錄

 

其他具體的可以參考后面的代碼實例程序。

  • 取得操作系統的環境變量

注意,這次是獲取操作系統的環境變量,而不是獲取JVM相關的一些變量。
  也許是為了營造JVM就是操作系統平台的氣氛,抑或是為了強調Java的平台無關性,不知幾時起Java已經把System.getenv(String)函數廢棄了。所以一般來說Java只能獲取它自己定義的一些變量,而無法與操作系統的環境變量交互,只能在運行靠java的“-D”參數來設置要傳遞給它的一些變量。
  所以唯一的辦法只能先判斷操作系統,然后用操作系統的命令來調出環境變量列表,設法獲得該輸出列表。

  • 代碼實現
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;

public class SystemValue {
 /**
  * 使用System獲取系統相關的值
  */
 public static void getSystemProperties() {
  Properties pp = System.getProperties();
  System.out.println("System's Properties:");
  System.out.println();
  java.util.Enumeration en = pp.propertyNames();
  while (en.hasMoreElements()) {
   String nextE = (String) en.nextElement();
   System.out.print(nextE + "=" + pp.getProperty(nextE));
   System.out.println();
  }
 }

 public static void getCustomProperties(String key) {
  Map map = getEnv();
  System.out.println(key + "=" + map.get(key));
 }

 public static Map getEnv() {
  Map map = new HashMap();
  Process p = null;
  Runtime r = Runtime.getRuntime();
  String OS = System.getProperty("os.name").toLowerCase();
  System.out.println("OS="+OS);
  try {
   if (OS.indexOf("windows 9") > -1) {
    p = r.exec("command.com /c set");
   } else if ((OS.indexOf("nt") > -1)
     || (OS.indexOf("windows 20") > -1)
     || (OS.indexOf("windows xp") > -1)) {
    p = r.exec("cmd.exe /c set");
   } else {
    // Unix
    p = r.exec("env");
   }
   BufferedReader br = new BufferedReader(new InputStreamReader(p
     .getInputStream()));
   String line;
   while ((line = br.readLine()) != null) {
    String[] str = line.split("=");
    map.put(str[0], str[1]);
   }
  } catch (IOException ioe) {
   ioe.printStackTrace();
  }
  return map;
 }

 public static void main(String[] args) {
  // getSystemProperties();
  getCustomProperties("JAVA_HOME");
 }
}

  java中獲取環境變量


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM