Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
67
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

@yoshi389111

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

目的

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

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

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 ファイル区切り文字 \
path.separator パス区切り文字 ;
line.separator 行区切り文字 \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() に記載なし 

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
67
Help us understand the problem. What are the problem?