【Java】系统属性的备忘录

为了达到的结果或目标

    システムプロパティ関連のクラス・メソッドなどを整理

系统属性设置

如果要启动Java虚拟机,可以通过命令行参数 -D 来添加或修改系统属性。

java -Dfile.encoding=UTF-8 -jar xxxx.jar

根据虚拟机的版本和供应商,可以以不同的方式进行更改,或者有一些无法更改的系统属性。

用Java程序进行的操作

获取指定键的值

java.lang.System#getProperty(String key)获取指定键的值(字符串)。

java.lang.System#getProperty(String key, String def)获取指定键的值(字符串)。如果属性值不存在,则返回默认值。

java.lang.Integer#getInteger(String nm)获取指定键的值(整数)。

java.lang.Integer#getInteger(String nm, int val)获取指定键的值(整数)。如果属性值不存在,则返回默认值。

java.lang.Integer#getInteger(String nm, Integer val)获取指定键的值(整数)。如果属性值不存在,则返回默认值。

java.lang.Booelan#getBoolean(String name)获取指定键的值(布尔值)。如果属性值不存在或不为”true”,则返回false。

在整数(Integer)和布尔值(Boolean)中,系统属性获取方法有点难以理解。

获取键和值的组合

获取java.lang.System的属性(Properties)。

获取java.lang.management.RuntimeMXBean的系统属性(System Properties),并将其重新封装为Map<String, String>的形式进行返回。

		RuntimeMXBean runtimeMXBean = ManagementFactory.getRuntimeMXBean();
		Map<String, String> systemProperties = runtimeMXBean.getSystemProperties();

修改值

java.lang.System#setProperty(String key, String value)

设置指定键的值。

java.lang.System#clearProperty(String key)

删除指定键的值。

java.lang.System#setProperties(Properties props)

设置系统属性。

保护系统属性

创建系统属性许可。可用于由安全管理器等控制。

普通的系统属性

在Java的Javadoc中,有一个名为 java.lang.System#getProperties() 的方法,它列出了各种属性。此外,还有一些其他被使用的属性。

キー対応する値の説明参考値 1java.versionJava Runtime Environmentのバージョン1.8.0_65java.vendorJava Runtime EnvironmentのベンダーOracle Corporationjava.vendor.urlJavaベンダーのURLhttp://java.oracle.com/java.homeJavaのインストール先ディレクトリ(省略)java.vm.specification.versionJava仮想マシンの仕様バージョン1.8java.vm.specification.vendorJava仮想マシンの仕様のベンダーOracle Corporationjava.vm.specification.nameJava仮想マシンの仕様名Java Virtual Machine Specificationjava.vm.versionJava仮想マシンの実装バージョン25.65-b01java.vm.vendorJava仮想マシンの実装のベンダーOracle Corporationjava.vm.nameJava仮想マシンの実装名Java HotSpot(TM) Client VMjava.specification.versionJava Runtime Environmentの仕様バージョン1.8java.specification.vendorJava Runtime Environmentの仕様のベンダーOracle Corporationjava.specification.nameJava Runtime Environmentの仕様名Java Platform API Specificationjava.class.versionJavaクラスの形式のバージョン番号52.0java.class.pathJavaクラス・パス(省略)java.library.pathライブラリのロード時に検索するパスのリスト(省略)java.io.tmpdirデフォルト一時ファイルのパス(省略)java.compiler使用するJITコンパイラの名前
java.ext.dirs拡張ディレクトリのパス(省略)os.nameオペレーティング・システム名Windows 7os.archオペレーティング・システムのアーキテクチャx86os.versionオペレーティング・システムのバージョン6.1file.separatorファイル区切り文字
* Windowsだとバックスラッシュ
* Unix/Linuxだとスラッシュ\path.separatorパス区切り文字
* Windowsだとセミコロン
* Unix/Linuxだとコロン;line.separator行区切り文字
* Windowsだと\r\n
* Unix/Linuxだと\nのみ\r\nuser.nameユーザーのアカウント名(省略)user.homeユーザーのホーム・ディレクトリ(省略)user.dirユーザーの現在の作業ディレクトリ(省略)file.encodingファイルの文字コード 2

其他(部分摘要)

    • ネットワークのプロパティ

 

    • LogManagerクラス

 

    • SimpleFormatterクラス

 

    • MidiSystemクラス

 

    • Currencyクラス

 

    SAXParserクラス

能够在不指定键值的情况下获取的方法和字段

有一些方法和字段,如java.lang.System#getProperty(String key),可以获取一些系统属性,而无需指定键名。

キー対応するメソッド・フィールドjava.vm.specification.versionjava.lang.management.RuntimeMXBean#getSpecVersion()java.vm.specification.vendorjava.lang.management.RuntimeMXBean#getSpecVendor()java.vm.specification.namejava.lang.management.RuntimeMXBean#getSpecName()java.vm.versionjava.lang.management.RuntimeMXBean#getVmVersion()java.vm.vendorjava.lang.management.RuntimeMXBean#getVmVendor()java.vm.namejava.lang.management.RuntimeMXBean#getVmName()java.class.pathjava.lang.management.RuntimeMXBean#getClassPath()java.library.pathjava.lang.management.RuntimeMXBean#getLibraryPath()os.namejava.lang.management.OperatingSystemMXBean#getName()os.archjava.lang.management.OperatingSystemMXBean#getArch()os.versionjava.lang.management.OperatingSystemMXBean#getVersion()file.separatorjava.io.File#separator, java.io.File#separatorCharpath.separatorjava.io.File#pathSeparator, java.io.File#pathSeparatorCharline.separatorjava.lang.System#lineSeparator()
Windows7,OracleJava 8u65的值不在System#getProperties()中记录。
bannerAds