在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扩展,仍然可以作为正则表达式。