在eclipse中运行Java app时如何避免glob扩展

我遇到了Eclipse运行配置的特殊行为,它似乎只是一个Windows问题。 假设我有一个打印出命令行参数的Java应用程序,如下所示:

public class WildCard { public static void main(String[] args) { for (String arg: args) { System.out.println(arg); } } } 

如果我使用可以由shell扩展的外卡提供参数,shell将展开它并将其提供给Java程序。 这并不奇怪。 所以,如果我在命令提示符下做

 java WildCard test/* 

该程序将打印

 test/foo.txt test/bar.txt 

其中foo.txt和bar.txt是目录“test”中的文件。

如果我用引号括起通配符参数,可以防止Shell扩展; * nix上的单引号,以及Windows上的双引号。 因此对于Windows,如果我在命令提示符下执行以下操作:

 java WildCard "test/*" 

该程序现在将打印

 test/* 

(没有扩张)。

但是,我发现Eclipse运行启动程序中的引用似乎没有效果,并且参数仍在扩展。 如果我放

 "test/*" 

在Eclipse运行启动程序的程序参数部分,并运行上面的类,我仍然得到

 test/foo.txt test/bar.txt 

换句话说,当程序实际运行时,双引号似乎丢失了。 这似乎只发生在Windows上。

有没有办法在Windows上使用Eclipse运行启动程序阻止glob扩展?

问题看起来非常有线:

 *.txt foo.* 

不会扩展,但是

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

将扩大。

看起来只有“所有文件”被展开,但所有其他字符串(包括*)将保持不变。

我遇到了同样的问题,我使用XP和eclipse 3.5.2

模式(.*)不会被eclipse扩展,仍然可以作为正则表达式。