我遇到了Eclipse运行配置的特殊行为,它似乎只是一个Windows问题.假设我有一个Java应用程序打印出命令行参数,如下所示:
public class WildCard {
public static void main(String[] args) {
for (String arg: args) {
System.out.println(arg);
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果我使用可以由shell扩展的外卡提供参数,shell将展开它并将其提供给Java程序.这并不奇怪.所以,如果我在命令提示符下做
java WildCard test/*
Run Code Online (Sandbox Code Playgroud)
该程序将打印
test/foo.txt
test/bar.txt
Run Code Online (Sandbox Code Playgroud)
其中foo.txt和bar.txt是目录"test"中的文件.
如果我用引号括起通配符参数,可以防止Shell扩展;*nix上的单引号,以及Windows上的双引号.所以对于Windows,如果我在命令提示符下执行以下操作:
java WildCard "test/*"
Run Code Online (Sandbox Code Playgroud)
该程序现在将打印
test/*
Run Code Online (Sandbox Code Playgroud)
(没有扩张).
但是,我发现Eclipse运行启动器中的引用似乎没有效果,并且参数仍在扩展.如果我放
"test/*"
Run Code Online (Sandbox Code Playgroud)
在Eclipse运行启动程序的程序参数部分,并运行上面的类,我仍然得到
test/foo.txt
test/bar.txt
Run Code Online (Sandbox Code Playgroud)
换句话说,当程序实际运行时,双引号似乎丢失了.这似乎只发生在Windows上.
有没有办法在Windows上使用Eclipse运行启动器阻止glob扩展?