LoginSignup
64
74

More than 1 year has passed since last update.

[Java] システムプロパティのメモ

Last updated at Posted at 2015-11-12

目的

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

システムプロパティの設定

JavaVM を起動する場合、コマンドライン引数に -D でシステムプロパティを、追加・変更することができます。

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

VMのバージョンやベンダーによっては違う方法で変更することができたり、あるいは変更できないシステムプロパティがある場合もありえます。

Java プログラムからの操作

指定したキーの値を取得

java.lang.System#getProperty(String key)
指定したキーの値(文字列)を取得します。
java.lang.System#getProperty(String key, String def)
指定したキーの値(文字列)を取得します。プロパティ値がない場合にはデフォルト値を返します。
java.lang.Integer#getInteger(String nm)
指定したキーの値(Integer)を取得します。
java.lang.Integer#getInteger(String nm, int val)
指定したキーの値(Integer)を取得します。プロパティ値がない場合にはデフォルト値を返します。
java.lang.Integer#getInteger(String nm, Integer val)
指定したキーの値(Integer)を取得します。プロパティ値がない場合にはデフォルト値を返します。
java.lang.Booelan#getBoolean(String name)
指定したキーの値(boolean)を取得します。プロパティ値がない場合、"true" ではない場合には偽を返します。

IntegerBoolean にシステムプロパティ取得メソッドがあるのは少し分かりにくいですね。

キーと値の組を取得

java.lang.System#getProperties()
Properties型 で取得。
java.lang.management.RuntimeMXBean#getSystemProperties()
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.util.PropertyPermission
システムプロパティのアクセス権を作成する。セキュリティマネージャなどで制御する場合に使います。

一般的なシステムプロパティ

java.lang.System#getProperties() の Javadoc に一覧があります。それ以外にもいくつか使われているものがあります。

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

その他(一部抜粋)

キー値を指定しないで取得できるメソッドおよびフィールド

java.lang.System#getProperty(String key) などでキー名を指定しなくても、一部のシステムプロパティを取得することができるメソッドやフィールドがあります。

キー 対応するメソッド・フィールド
java.vm.specification.version java.lang.management.RuntimeMXBean#getSpecVersion()
java.vm.specification.vendor java.lang.management.RuntimeMXBean#getSpecVendor()
java.vm.specification.name java.lang.management.RuntimeMXBean#getSpecName()
java.vm.version java.lang.management.RuntimeMXBean#getVmVersion()
java.vm.vendor java.lang.management.RuntimeMXBean#getVmVendor()
java.vm.name java.lang.management.RuntimeMXBean#getVmName()
java.class.path java.lang.management.RuntimeMXBean#getClassPath()
java.library.path java.lang.management.RuntimeMXBean#getLibraryPath()
os.name java.lang.management.OperatingSystemMXBean#getName()
os.arch java.lang.management.OperatingSystemMXBean#getArch()
os.version java.lang.management.OperatingSystemMXBean#getVersion()
file.separator java.io.File#separator, java.io.File#separatorChar
path.separator java.io.File#pathSeparator, java.io.File#pathSeparatorChar
line.separator java.lang.System#lineSeparator()
  1. Windows7, OracleJava 8u65 の値

  2. System#getProperties() に記載なし

64
74
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
64
74