2012-11-19 71 views
1

當使用eclipse運行配置運行時,程序工作正常,但是使用ant運行時,它無法從args [0]解析int,我不明白。完整的代碼可以在這裏找到https://gist.github.com/4108950/e984a581d5e9de889eaf0c8faf0e57752e825a97 我相信這是與螞蟻,Ant命令行參數

target name="run" description="run the project"> 
    java dir="${build.dir}" classname="BinarySearchTree" fork="yes"> 
    <arg value="6 in.txt"/> 
    /java> 
/target> 

的ARG值將通過-D標誌來改變,如螞蟻-Dargs =「6 testData1.txt」運行。

任何幫助將不勝感激,這是非常令人沮喪的。

回答

6

您需要爲兩個不同的arg值提供的參數:

<target name="run" description="run the project"> 
    <java dir="${build.dir}" classname="BinarySearchTree" fork="yes"> 
     <arg value="6" /> 
     <arg value="in.txt" /> 
    </java> 
</target> 

您還可以使用line屬性;從ANT文檔:

<arg value="-l -a"/> 

是含有一個空格字符的單個命令行參數,而不是單獨的命令「 - > l」和「-A」。

<arg line="-l -a"/> 

這與兩個單獨的參數的命令行, 「-L」 和 「-A」。

+0

謝謝。我如何配置它由-D標誌進行更改,以便用多個命令運行,比如-Dargs =「6 test1.txt」,然後是-Dargs =「4 test.txt」?謝謝。 – kqualters

+0

嘗試指定-D 運行時出現以下錯誤: [java]線程「main」中的異常java.lang.NumberFormatException:用於輸入字符串:「-Ddefault.debug = 10」 [java] \t at java .lang.NumberFormatException.forInputString(NumberFormatException.java:65) [java] \t at java.lang.Integer.parseInt(Integer.java:481) [java] \t at java.lang.Integer.parseInt(Integer.java :514) [java] \t at BinarySearchTree.main(Unknown Source) [java] Java結果:1 – kqualters

0

拓展時代的答案。

java task支持sysproperty和jvmarg。

例如(從螞蟻java的任務頁面)

<java classname="test.Main" 
    fork="yes" > 
<sysproperty key="DEBUG" value="true"/> 
<arg value="-h"/> 
<jvmarg value="-Xrunhprof:cpu=samples,file=log.txt,depth=3"/> </java> 

所以,你可以從傳遞給螞蟻命令行構建ARGS。

<target name="run" description="run the project"> 
    <java dir="${build.dir}" classname="BinarySearchTree" fork="yes"> 

     <sysproperty key="testarg" value="${testarg}" 
     <arg value="${arg1}" /> 
     <arg value="${arg2}" /> 

    </java> 
</target> 

現在,如果你調用Ant與ant -Dtestarg=test1234 -Darg1=6 -Darg2=in.txt,然後testarg將通過屬性中可用。其他人將成爲java程序的正常參數。