2010-10-05 36 views
10

我遇到了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中運行啓動?

+0

我傾向於認爲這是一個日食錯誤,但想看看是否有一個可行的解決方法的問題。 – sjlee 2010-10-05 16:16:39

+0

我用反斜槓轉義通配符的建議實際上並不奏效。它**在我使用的測試用例中工作(並且我仍然不知道爲什麼),但在其他情況下不起作用。我正在刪除我的答案,因爲它實際上並沒有解決問題。 – Grodriguez 2010-10-05 16:42:23

+4

我發現了一個現有的eclipse bug ... http:// goo。gl/eM6e – sjlee 2010-10-05 17:03:35

回答

0

問題看起來很有線:

*.txt 
foo.* 

將不會被替換,但

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

將擴大。

它看起來像只「所有文件」展開,但所有其他字符串(包括*)將保持不變。

我在同樣的問題,我用XP和eclipse 3.5.2

0

模式(.*)不會被蝕擴展,並且還可以作爲一個正則表達式。

相關問題