⇧ Oh, my gosh...
java.exeのオプション-Dproperty=valueが分かり辛い
バッチ処理に関わらずプロジェクトがjarファイルになっているような時に、java.exeでjarを実行することあるあるだと思うのですが、java.exeのオプションが分かり辛い。
-D
property=
value-Dfoo="foo bar"
など)。https://docs.oracle.com/javase/jp/17/docs/specs/man/java.html#overview-of-java-options
⇧ システム・プロパティはと言うと、
⇧ということで、
の区別が非常に分かり辛いんですね...
一応、
⇧ OracleさんのAPIドキュメントに記載されてるものが、『1.Java仮想マシンが環境に合わせて自動的に設定』の全量と考えて良いんですかね?
『2.ユーザーが任意に設定』の場合に、設定したシステム・プロパティってどう活用するのかがいまいち曖昧なのよね...
stackoverflowによると、
The -D sets property values the java program currently running has access to. It allows the programmer to set values that are needed for the program to run but the program doesn't know what those values are so the user has to set them. This can be as simple as setting a file path or a resource location to more complex things that change the behavior of the program.
Take the example below
String value = System.getProperty("foo");
System.out.println("My value is: " + value);
Then when you run the program such as:
java -Dfoo="bar" -jar MyProg.jar
you will see the output as:
My value is: bar
⇧ -Dproperty=valueの値はJava側でシステムプロパティとして取得する感じになるっぽいので、Java側でシステムプロパティを利用しているようなプログラムをしていないと意味が無いってことですかね。
あと、独自に追加したシステムプロパティなのか、Javaが標準で用意してるシステムプロパティなのか、混乱しそうだけど...
ちなみに、
⇧ java.exeのhelpで確認すると、
-D<name>=<value> システム・プロパティを設定する
⇧ ってなってるから、-Dオプションが正式名称になるんかな?
Web上で閲覧できるドキュメントを再掲すると、
-D
property=
value-Dfoo="foo bar"
など)。https://docs.oracle.com/javase/jp/17/docs/specs/man/java.html#overview-of-java-options
⇧ となっており、統一性が無いから何とも言えん...
せめて公式のドキュメントは統一性を持たせて欲しい気がする...
毎度モヤモヤ感が半端ない...
今回はこのへんで。