我遇到了Eclipse運行配置的特殊行爲,它似乎是一個純Windows的問題。假設我有一個Java應用程序,打印出命令行參數,如下所示:如何避免在Eclipse中運行Java應用程序時的glob擴展
public class WildCard {
public static void main(String[] args) {
for (String arg: args) {
System.out.println(arg);
}
}
}
如果我提供一張外卡,可以通過外殼擴展的說法,shell將展開它,並給它Java程序。這並不奇怪。所以,如果我在命令提示符
java WildCard test/*
做程序將打印
test/foo.txt
test/bar.txt
其中foo.txt的和跳回到bar.txt在目錄「測試」文件。
如果我用引號括住通配符參數,可以防止Shell擴展; * nix上的單引號和Windows上的雙引號。因此,對於Windows系統,如果我做了以下命令提示符:
java WildCard "test/*"
程序將立即列印
test/*
(無擴展)。
不過,我發現的是,在Eclipse運行啓動的報價似乎沒有任何效果,參數仍然擴大。如果我把
"test/*"
在Eclipse中運行啓動程序參數部分,並運行上面的類,我仍然得到
test/foo.txt
test/bar.txt
換句話說,雙引號似乎失去了當程序實際運行。這似乎只發生在Windows上。
有沒有一種方法,以防止水珠擴展在Windows上使用Eclipse中運行啓動?
我傾向於認爲這是一個日食錯誤,但想看看是否有一個可行的解決方法的問題。 – sjlee 2010-10-05 16:16:39
我用反斜槓轉義通配符的建議實際上並不奏效。它**在我使用的測試用例中工作(並且我仍然不知道爲什麼),但在其他情況下不起作用。我正在刪除我的答案,因爲它實際上並沒有解決問題。 – Grodriguez 2010-10-05 16:42:23
我發現了一個現有的eclipse bug ... http:// goo。gl/eM6e – sjlee 2010-10-05 17:03:35