Java Ant命令行参数

Java Ant命令行参数,java,ant,Java,Ant,当使用eclipse运行配置运行时,该程序运行良好,但当使用ant运行时,它无法从args[0]解析int,我不理解这一点。这里有完整的代码 我相信这和蚂蚁有关 target name="run" description="run the project"> java dir="${build.dir}" classname="BinarySearchTree" fork="yes"> <arg value="6 in.txt"/> /java>

当使用eclipse运行配置运行时,该程序运行良好,但当使用ant运行时,它无法从args[0]解析int,我不理解这一点。这里有完整的代码 我相信这和蚂蚁有关

target name="run" description="run the project">
   java dir="${build.dir}" classname="BinarySearchTree" fork="yes">
    <arg value="6 in.txt"/>
   /java>
/target>
targetname=“run”description=“运行项目”>
java dir=“${build.dir}”classname=“BinarySearchTree”fork=“yes”>
/java>
/目标>
arg值将通过-D标志更改,如在ant-Dargs=“6 testData1.txt”运行中所示


任何帮助都将不胜感激,这是非常令人沮丧的

您需要将参数作为两个不同的
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>
是包含空格字符的单个命令行参数,而不是单独的命令“->l”和“-a”


这是一个具有两个独立参数的命令行,“-l”和“-a”


扩大时代的答案

支持sysproperty和jvmarg

例如(来自AntJava任务页面)


因此,您可以从传递给ant的命令行构造参数

<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>


非常感谢。如何将其配置为通过-D标志更改,以便使用多个命令运行,例如-Dargs=“6 test1.txt”和-Dargs=“4 test.txt”?谢谢。当尝试在线程“main”java.lang.NumberFormatException:中为输入字符串指定-D run:[java]异常时,仍然收到以下错误:“-Ddefault.debug=10”[java]位于java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)[java]位于java.lang Integer.parseInt(Integer.java:481)[java]位于java.lang.Integer.parseInt(Integer.java:514)[java]位于BinarySearchTree.main(未知源)[java]java结果:1
<arg line="-l -a"/>
<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>
<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>