12

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 ランチャーを使用してグロブの展開を防ぐ方法はありますか?

4

2 に答える 2

0

問題はかなり有線に見えます:

*.txt
foo.*

拡張されませんが、

*
*.*
"*"
"*.*"
\"*\"
\"*.*\"

拡張されます。

「すべてのファイル」のみが展開されているように見えますが、他のすべての文字列(*を含む)は変更されません。

私は同じ問題を抱えており、XPとeclipse3.5.2を使用しています

于 2010-11-03T11:15:26.093 に答える
0

パターン(.*)は日食によって展開されず、正規表現として引き続き機能します。

于 2014-06-16T19:45:05.417 に答える