在 Java 應用開發中,經常需要獲取 JVM、作業系統、類路徑等運行環境資訊。Java 提供了 System.getProperties() 方法,可一次性取得所有系統屬性。本文彙整常用屬性鍵值並提供完整代碼示例,方便快速查閱。
java.lang.System.getProperties() 返回一個 Properties 物件,繼承自 Hashtable,包含所有系統屬性鍵值對。
| 屬性鍵 | 說明 |
|---|---|
java.version | Java 運行環境版本 |
java.vendor | Java 運行環境供應商 |
java.vendor.url | Java 供應商 URL |
java.home | Java 安裝路徑 |
java.class.version | Java 類格式版本號 |
java.class.path | Java 類路徑 |
java.library.path | 加載庫時搜索的路徑列表 |
| 屬性鍵 | 說明 |
|---|---|
java.vm.specification.version | JVM 規範版本 |
java.vm.specification.vendor | JVM 規範供應商 |
java.vm.specification.name | JVM 規範名稱 |
java.vm.version | JVM 實現版本 |
java.vm.vendor | JVM 實現供應商 |
java.vm.name | JVM 實現名稱 |
| 屬性鍵 | 說明 | 典型值 |
|---|---|---|
os.name | 作業系統名稱 | Windows 10, Linux, Mac OS X |
os.arch | 作業系統架構 | x86, amd64, arm64 |
os.version | 作業系統版本 | 10.0, 5.15.0 |
file.separator | 文件分隔符 | Windows: \, Unix: / |
path.separator | 路徑分隔符 | Windows: ;, Unix: : |
line.separator | 行分隔符 | Windows: \r\n, Unix: \n |
| 屬性鍵 | 說明 |
|---|---|
user.name | 用戶賬戶名稱 |
user.home | 用戶主目錄 |
user.dir | 用戶當前工作目錄 |
import java.util.Properties;
public class SystemPropsDemo {
public static void main(String[] args) {
Properties props = System.getProperties();
// Java 執行環境
System.out.println("Java 版本: " + props.getProperty("java.version"));
System.out.println("Java 廠商: " + props.getProperty("java.vendor"));
System.out.println("Java 安裝路徑: " + props.getProperty("java.home"));
System.out.println("類路徑: " + props.getProperty("java.class.path"));
System.out.println("庫搜索路徑: " + props.getProperty("java.library.path"));
System.out.println("臨時文件目錄: " + props.getProperty("java.io.tmpdir"));
System.out.println("擴展目錄: " + props.getProperty("java.ext.dirs"));
// 作業系統
System.out.println("OS 名稱: " + props.getProperty("os.name"));
System.out.println("OS 架構: " + props.getProperty("os.arch"));
System.out.println("OS 版本: " + props.getProperty("os.version"));
System.out.println("文件分隔符: " + props.getProperty("file.separator"));
System.out.println("路徑分隔符: " + props.getProperty("path.separator"));
System.out.println("行分隔符: " + props.getProperty("line.separator"));
// 用戶環境
System.out.println("用戶名: " + props.getProperty("user.name"));
System.out.println("用戶主目錄: " + props.getProperty("user.home"));
System.out.println("工作目錄: " + props.getProperty("user.dir"));
// 列印所有屬性(調試用)
// props.list(System.out);
}
}
File.separator、File.pathSeparator 而非硬編碼分隔符java.io.tmpdir 獲取臨時目錄,避免權限問題os.name 判斷平台,執行平台特定代碼user.home)可能涉及隱私,日誌記錄時需脫敏若只需特定屬性,可直接使用 System.getProperty("key"),比獲取完整 Properties 更高效:
String javaVersion = System.getProperty("java.version");
String osName = System.getProperty("os.name");
掌握系統屬性的獲取與應用,能讓你的 Java 應用更好地適應不同運行環境,提升可移植性與健壯性。