- 締切済み
バッチファイルごしのシステムプロパティ設定
---------------- sample.Main ----------------- package sample; public class Main { public static void main(String[] args) { for (int i = 0 ; i < args.length ; i++) { System.out.println("args[" + i + "] = " + args[i]); } System.out.println("System.getProperty(\"sample.property\") = " + System.getProperty("sample.property")); } } ---------------------------------------------- ----------------- run.bat -------------------- java -cp . sample.Main %* ---------------------------------------------- ---------------- ファイル構成 ---------------- currentDir +-run.bat +-sample +-Main.class ---------------------------------------------- ---------------- 実行と結果 ------------------ C:\>run -Dsample.property=propertyValue C:\>java -cp . sample.Main -Dsample.property=propertyValue args[0] = -Dsample.property=propertyValue System.getProperty("sample.property") = null ----------------------------------------------- ------------------ 期待した結果 -------------- C:\>run -Dsample.property=propertyValue C:\>java -cp . sample.Main -Dsample.property=propertyValue System.getProperty("sample.property") = propertyValue ----------------------------------------------- 複雑なことは行わず(正攻法にて) 期待した結果を得るには、どのようにすればいいのでしょうか・・。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- Yanch
- ベストアンサー率50% (114/225)
>ごめんなさい、補足しておきますと、通常の引数はそのまま使えるように保ちつつ、システムプロパティもがっつり設定したいんです。 でしたら、もう一工夫して、 run.batの中身を ---------------------------------------------------------------------- java -Dsample.property=propertyValue -cp . sample.Main %* ---------------------------------------------------------------------- とか、 run.batの中身を ---------------------------------------------------------------------- set OPT=-Dsample.property=propertyValue java %OPT% -cp . sample.Main %* ---------------------------------------------------------------------- のような感じでしょうか。
- Yanch
- ベストアンサー率50% (114/225)
run.batの中身を ---------------------------------------------------------------------- java %* -cp . sample.Main ---------------------------------------------------------------------- と順番を入れ替えてみては如何でしょう。
補足
あ、そうですよね、質問の内容だと、それでも事足りてしまいますよね・・。 ごめんなさい、補足しておきますと、通常の引数はそのまま使えるように保ちつつ、システムプロパティもがっつり設定したいんです。 でも、どうしても無理な時は、Yanchさんのおっしゃるように通常引数までシステムプロパティにするしかないのかな・・。
お礼
うーん、なんだか正攻法とは言えない気がしますが、 現状(今の自分の問題)だとそれで事足りてしまうんですよね・・。 とりあえずはそんな感じでいこうかなと思います。 *必要になったら args = obtainSystemProperties(args); みたいなかんじでシステムプロパティを解析/設定しようと思います。 ありがとうございました。