2014-10-10 74 views
0

這是一個奇怪的問題,我跑進:Java中主函數args的分割規則?

我創建一個單獨的程序打印所有接收到的指定參數時,這裏是代碼:

public class Test { 
    public static void main(String[] args) { 
     for (int i = 0; i < args.length; i ++) { 
      System.out.println(args[i]); 
     } 
    } 
} 

然後我建的是一個jar文件並運行以下命令:

java -jar test.jar test&1  

但是,沒有打印 「測試& 1」 的預期。其結果是:

test 
'1'is not recognized as an internal or external command,operable program or batch file.  

所以我的問題是:什麼是args的分離?如果我真的需要收到「test & 1」,我該怎麼辦?

謝謝!

回答

3

這與Java無關。 &字符對於Windows shell來說是特殊的(我可以從錯誤消息中告訴它是Windows):它在一行上分隔兩個命令,所以你要做的是告訴shell運行java -jar test.jar test,然後運行1。如果你想通過test&1到Java,你必須把它放在引號:

java -jar test.jar "test&1" 

&也是在* nix炮彈特殊(但以不同的方式,它運行在一個子命令貝殼)。在那裏,你可以使用上面的引號,或者在&之前加上\。但不是在Windows上。