あるプルリクエストを出すつもりで細々と検証している際にやったことのメモ。
- プルリクに載せるつもりのこと:JAVA_TOOL_OPTIONSを明示的に指定させたよ
- 疑問点:実行時にJAVA_TOOL_OPTIONSがある場合は?
検証用コード(Macで作業)
Hello.java
public class Hello {
public static void main(String[] args){
System.out.println("こんにちは、世界");
}
}
単体項目の上書き確認
$ echo $JAVA_TOOL_OPTIONS
$ java Hello
����ɂ��A���E
$ JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF-8 java Hello
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
こんにちは、世界
$ export JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF-8
-Dfile.encoding=UTF-8
$ java Hello
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
こんにちは、世界
$ JAVA_TOOL_OPTIONS=-Dfile.encoding=MS932 java Hello
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=MS932
����ɂ��A���E
$ JAVA_TOOL_OPTIONS="-Dfile.encoding=MS932 -Dfile.encoding=UTF-8" java Hello
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=MS932 -Dfile.encoding=UTF-8
こんにちは、世界
この挙動を追う限りでは、最悪でもJAVA_TOOLS_OPTIONSが事前に指定されていても、後ろに結合させれば予定通りの動きはしてそう
忘れてたので続き
envに複数項目されるので対応する確認
$ echo $JAVA_TOOL_OPTIONS
-Dfile.encoding=UTF-8 -agentlib:hprof
$ java Hello
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8 -agentlib:hprof
こんにちは、世界
Dumping Java heap ... allocation sites ... done.
$ JAVA_TOOL_OPTIONS="-Dfile.encoding=MS932" java Hello
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=MS932
����ɂ��A���E
$ JAVA_TOOL_OPTIONS="$JAVA_TOOL_OPTIONS -Dfile.encoding=MS932" java Hello
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8 -agentlib:hprof -Dfile.encoding=MS932
����ɂ��A���E
Dumping Java heap ... allocation sites ... done.
ちゃんと引き継がないとダメだった。危ない