2

Eclipse 実行構成で実行するとプログラムは正常に動作しますが、ant で実行すると、args[0] から int を解析できません。これは理解できません。完全なコードはhttps://gist.github.com/4108950/e984a581d5e9de889eaf0c8faf0e57752e825a97 で入手できます

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

arg 値は、ant -Dargs="6 testData1.txt" の実行のように、-D フラグによって変更されます。

どんな助けでも大歓迎です、それは非常にイライラします。

4

2 に答える 2

7

引数を 2 つの異なる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」という 2 つの別個の引数を持つコマンド ラインです。

于 2012-11-19T04:48:36.407 に答える
1

エポックの答えを拡大します。

java タスクは、sysproperty と jvmarg をサポートします。

例(ant 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>

そのため、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>

で ant を呼び出すとant -Dtestarg=test1234 -Darg1=6 -Darg2=in.txttestargプロパティ経由で利用できるようになります。その他は、Java プログラムへの通常の引数になります。

于 2012-11-19T05:17:15.133 に答える