検索

キーワード


【Java】システムプロパティからJVM上で設定されている改行コードなどの情報を確認する方法

  • 公開日:2021-05-08 06:26:56
  • 最終更新日:2021-05-08 06:26:43
【Java】システムプロパティからJVM上で設定されている改行コードなどの情報を確認する方法

当記事では、システムプロパティの概要と取得の方法、具体的な使用例をJava Gold SE11の資格を持つ著者が解説します。

プロパティとは、属性や設定値を表す情報のことで、Java実行環境(JRE)の一つであるJava仮想マシン(JVM)もプロパティを持ちます。これをシステムプロパティと呼びます。

一般のプロパティファイルについては、以下の記事で紹介しています。

【Java】PropertiesクラスとResourceBundleクラス


システムプロパティを取得するためのメソッド

System.out.printlnメソッドなどでおなじみのSystemクラスには、このシステムプロパティを取得するためのメソッドが実装されています。

メソッド名戻り値の型説明
lineSeparator()Stringシステムで設定されている行区切り文字列を返します。戻り値は、UNIX系システムでは"\n"、Windows系システムでは"\r\n"になります。
getProperty(
String Key
[,String def])
String指定されたキーを持つシステムプロパティの値を返します。指定されたキーがシステムプロパティ中に存在しない場合は、defで指定したデフォルト値を返します。
getProperties()Properties現在のシステムプロパティを返します。PropertiesクラスはMap型で、キーと値のペアを持ちます。

Propertiesクラスについては以下の記事で詳しく紹介しています。

【Java】PropertiesクラスとResourceBundleクラス

今回のサンプルコードでは、Propertiesクラスの以下のメソッドを使用します。

list(
PrintStream out)
void指定した出力ストリームに、プロパティのリストを出力します。
例えばoutにSystem.outを指定すれば、標準出力ストリームにプロパティのリストを出力できます。
メソッド名戻り値の型説明

システムプロパティから取得できる主なプロパティ

以下の表で代表的なプロパティのキーとその内容を紹介します。

プロパティのキー内容
java.class.pathJavaクラスパス
java.homeJavaをインストールしたディレクトリ
java.io.tmpdir一時ファイルを生成するパス
java.library.pathJavaのライブラリを検索するパス
java.versionJREのバージョン
java.vm.nameJava仮想マシンの名前
user.dirユーザーの現在の作業ディレクトリ
user.homeユーザーのホームディレクトリ
os.archOSのアーキテクチャ名
os.nameOS名
os.versionOSのバージョン
file.separatorファイルの区切り文字
file.encodingJRE上でのデフォルトの文字コード
line.separator行の区切り文字
path.separator=;パスの区切り文字


システムプロパティを取得するサンプルコード

以下のコードでは、システムプロパティから改行コード呼び出し、文字コードの種類の出力、すべてのシステムプロパティの出力を行っています。

public class SystemPropertiesSample {
	public static void main(String[] args) {
		//System.lineSeparator()で改行コードを呼び出す
		System.out.println("一行目" + System.lineSeparator() + "二行目");

		//JRE上で現在使用されている文字コードを返す
		System.out.println(System.getProperty("file.encoding"));

		//システムプロパティを全て取得して出力する
		Properties properties = System.getProperties();
		properties.list(System.out);
	}
}


システムプロパティを取得するサンプルコードの実行結果

上記のサンプルコードを実行すると、以下のような内容がコンソールに出力されます。

一行目
二行目
UTF-8
-- listing properties --
sun.desktop=windows
awt.toolkit=sun.awt.windows.WToolkit
java.specification.version=11
sun.cpu.isalist=amd64
sun.jnu.encoding=MS932
java.class.path=
java.vm.vendor=AdoptOpenJDK
sun.arch.data.model=64
user.variant=
java.vendor.url=https://adoptopenjdk.net/
user.timezone=
os.name=Windows 10
java.vm.specification.version=11
sun.java.launcher=SUN_STANDARD
user.country=JP
(以下省略)


まとめ

Java実行環境の設定に依存する不具合(コンソールで文字化けする、バージョンが古いため使えない機能がある)などの事象が起きた場合、システムプロパティを確認する必要が出てくると思います。そのような不具合はコードを書き換えても治らない可能性があり、システムプロパティを変更する必要があるかもしれません。

普段使うことはあまりありませんが、頭の片隅に置いといていただければ幸いです。

関連記事:

【Java】PropertiesクラスとResourceBundleクラス


【著者】

ゆうさい

フォワードソフト株式会社のエンジニア。経験はまだ浅いものの、Java、Python、JavaScriptなど様々な言語の他、クラウドやネットワーク技術を勉強しています。PythonやVBAを使った自動化で楽をするのを考えるのが好きです。 Oracle Certified Java Programmer Gold SE 11、HTML5プロフェッショナル認定試験レベル2、AWSプラクティショナーなどの情報資格を保有しています。

よく読まれている記事
【Java】JSPでタグライブラリを使う(JSTL)

【Java】JSPでタグライブラリを使う(JSTL)

こんにちは。エンジニアの新田です!ここでは、システムエンジニアとして働いている私が、システム開発手法や開発言語について紹介していこうと思います。今回は、JSPの標準タグライブラリ「JSTL」について紹介します。Javaについて勉強している方、Webアプリケーションを構築したいと思っている方の参考になれば幸いです!関連記事リンク: 【Java】JSPの基本的な構文/【Java】JSPのアクションタグ

【Java】Stringクラス文字列を操作するメソッドの使い方まとめ!実例も紹介!

【Java】Stringクラス文字列を操作するメソッドの使い方まとめ!実例も紹介!

こんにちは。新人エンジニアのサトウです。システムエンジニアとして駆け出したばかりですが、初心者なりの視点でわかりやすい記事を心がけていますので参考になればうれしいです。プログラム初心者✅にも、プログラムに興味がある人✨も、短い時間で簡単にできますのでぜひこの記事を読んで試してみてください!そもそもStringとは何?『 String 』... Java言語において文字列のデータ型を指します。基本デ

【Java】文字列の置き換え(String#format)!エスケープシーケンスのまとめも!!

【Java】文字列の置き換え(String#format)!エスケープシーケンスのまとめも!!

こんにちは。新人エンジニアのサトウです。システムエンジニアとして駆け出したばかりですが、初心者なりの視点でわかりやすい記事を心がけていますので参考になればうれしいです。プログラム初心者✅にも、プログラムに興味がある人✨も、短い時間で簡単にできますのでぜひこの記事を読んで試してみてください!Stringクラスformatメソッドの文字列整形【java.utilパッケージ】Formatterクラスfo

【Java】文字列格納後に変更可能!?StringBufferクラスとStringBuilderクラス!

【Java】文字列格納後に変更可能!?StringBufferクラスとStringBuilderクラス!

こんにちは。新人エンジニアのサトウです。システムエンジニアとして駆け出したばかりですが、初心者なりの視点でわかりやすい記事を心がけていますので参考になればうれしいです。プログラム初心者にも✅、プログラムに興味がある人✨も、短い時間で簡単にできますのでぜひこの記事を読んで試してみてください!文字列を扱う3つのクラス【java.langパッケージ】java.langパッケージの文字列を扱うクラスにはS

【Java】値?変数?型??しっかり解説!『データ型(プリミティブ型と参照型)』

【Java】値?変数?型??しっかり解説!『データ型(プリミティブ型と参照型)』

こんにちは。新人エンジニアのサトウです。システムエンジニアとして駆け出したばかりですが、初心者なりの視点でわかりやすい記事を心がけていますので参考になればうれしいです。プログラム初心者✅にも、プログラムに興味がある人✨も、短い時間で簡単にできますのでぜひこの記事を読んで試してみてください!プリミティブ型と参照型プログラム開発では型を持った変数を使ってデータのやり取りをしますが、データ型によって仕様