我遇到了 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”中的文件。
如果我将通配符参数括在引号中,则可以防止外壳扩展;*nix 上的单引号和 Windows 上的双引号。所以对于 Windows,如果我在命令提示符下执行以下操作:
java WildCard "test/*"
该程序现在将打印
test/*
(没有扩展)。
但是,我发现 Eclipse 运行启动器中的引用似乎没有任何效果,并且参数仍然展开。如果我把
"test/*"
在 Eclipse 运行启动器的程序参数部分,并运行上面的类,我仍然得到
test/foo.txt
test/bar.txt
换句话说,当程序实际运行时,双引号似乎丢失了。这似乎只发生在 Windows 上。
有没有办法防止在 Windows 上使用 Eclipse 运行启动器进行 glob 扩展?