検索

キーワード


目次

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

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

Workteria(ワークテリア)では難易度の高いものから低いものまで、スキルや経験に合わせた案件を多数揃えています。会員登録は無料ですので、ぜひ会員登録してご希望の案件を探してみてください!

フリーランス/正社員のエンジニアとして活躍するには、ご自身のスキルや経験に合わせた仕事を選ぶことが大切です。ご希望の案件がみつからない場合はお気軽にお問い合わせください!ユーザ満足度の高いキャリアコンサルタントが在籍していますので、希望条件や悩み事などなんでもご相談ください。ご希望にピッタリの案件をご紹介させていただきます。

当記事では、システムプロパティの概要と取得の方法、具体的な使用例を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、C#などの言語の他、クラウドやネットワーク技術を勉強しています。PythonやVBAを使った自動化で楽をする方法を考えるのが好きです。 最近はジェネレーティブAIの業務利用に関する検証を行っています。 資格を通じて知識を吸収することを心がけており、セキュリティスペシャリスト、データベーススペシャリスト、応用情報技術者、Oracle Certified Java Programmer Gold SE 11、Pythin3 エンジニア認定試験、HTML5プロフェッショナル認定試験レベル2、AWSプラクティショナーなどの情報資格を保有しています。

編集した記事一覧

正社員/フリーランスの方でこのようなお悩みありませんか?

  • 自分に合う案件を定期的に紹介してもらいたい
  • 週2、リモートワークなど自由な働き方をしてみたい
  • 面倒な案件探し・契約周りは任せて仕事に集中したい

そのような方はぜひ、Workteriaサイトをご利用ください!

  • 定期的にご本人に合う高額案件を紹介

  • リモートワークなど自由な働き方ができる案件多数

  • 専属エージェントが契約や請求をトータルサポート

よく読まれている記事
【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】値?変数?型??しっかり解説!『データ型(プリミティブ型と参照型)』

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