2012-11-19 72 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程序的正常参数。