Eclipse 実行構成の奇妙な動作に遭遇しました。これは Windows のみの問題のようです。次のようなコマンド ライン引数を出力する Java アプリがあるとします。
public class WildCard {
public static void main(String[] args) {
for (String arg: args) {
System.out.println(arg);
}
}
}
引数にシェルで展開できるワイルドカードを指定すると、シェルはそれを展開して Java プログラムに渡します。それは驚くべきことではありません。したがって、コマンドプロンプトで行う場合
java WildCard test/*
プログラムが印刷されます
test/foo.txt
test/bar.txt
ここで、foo.txt と bar.txt はディレクトリ「test」内のファイルです。
ワイルドカード引数を引用符で囲むと、シェルの展開を防ぐことができます。*nix では一重引用符、Windows では二重引用符。したがって、Windows の場合、コマンド プロンプトで次の操作を行うと、次のようになります。
java WildCard "test/*"
プログラムが印刷されます
test/*
(拡張なし)。
しかし、私が見つけたのは、Eclipse 実行ランチャーでの引用は効果がないようで、議論はまだ展開されているということです。私が入れたら
"test/*"
Eclipse実行ランチャーのプログラム引数セクションで、上記のクラスを実行しても、まだ得られます
test/foo.txt
test/bar.txt
つまり、プログラムが実際に実行されると、二重引用符が失われたように見えます。これは Windows でのみ発生するようです。
Windows で Eclipse ランチャーを使用してグロブの展開を防ぐ方法はありますか?