2015年9月23日水曜日

JavaでProgram Arguments(Command Line Arguments)を取り出す

javaのアプリケーションなんかを実行する際に、

java -jar foobar.jar --arg1=true --arg2=false

なんてことをすることはよくあると思うんですが、arg1の値を使いたいとかのときは、
mainメソッドからだと、当然、public static void main(String.. args) {}のargsから取れるわけです。

じゃあ、mainメソッド以外から取り出すときに、よい取り出し方ってどうなんだろうと小一時間探してみたんですが、イマイチ見つからず、結果的にこんな感じで取り出してみました。

String command = System.getProperty("sun.java.command");
String[] args = command.split(" ", 0);


ほかにあったりしないのかな ( ´ー`)フゥー...

追記

ちなみに、Springの場合だと、

ConfigurableApplicationContext ctx = //どこかからapplicationContext取得
ConfigurableEnvironment ce = ctx.getEnvironment();
String arg = ce.getProperty("arg1");

とかでもいけます。