0

Eclipse を使用してファイル「testFile.txt」を Java プログラムに引数として渡していますが、正常に実行することを選択すると問題なく動作します。「testFile.txt」を引数として設定して Eclipse で Ant build.xml を実行すると、次のエラーが発生します。

BUILD FAILED ターゲット "testFile.txt" がプロジェクト "MyProj1" に存在しません。

Ant を使用し、次の行を使用して Linux シェルでファイルを渡す場合:

ant -Dargs="testFile.txt" run

文字列値「testFile.txt」を渡しますが、対応するファイルが見つかりません。このファイルは、src と build.xml がある MyProj1 フォルダーにあります。.txt ファイルを移動したり、ビルド ファイルを変更したりする必要がありますか? ビルド ファイルを変更する必要がある場合、何が必要ですか?

<target name="run" depends="compile" description="run the project">
    <java dir="${build.dir}" classname="${main.class}" fork="yes">
        <arg line="${args}"/>
    </java>
</target>
4

1 に答える 1

0

追加

<arg file="testFile.txt"/>

Javaタスクへ、すなわち:

<target name="run" depends="compile" description="run the project">
    <java dir="${build.dir}" classname="${main.class}" fork="yes">
        <arg line="${args}"/>
        <arg file="testFile.txt"/>
    </java>
</target>

これにより、ファイルがある/path/to/build.xml/directoryへの絶対パスが作成されます。

ファイルがサブディレクトリにある場合は、それをargファイルの値の前に追加します。../も期待どおりに機能します。

編集:

ディレクトリ構造

c:\project
|
+---PassFileViaAnt.class
+---build.xml
+---foo.txt

クラス:

public class PassFileViaAnt {
    public static void main( String[] args ) {
        for( String arg : args ) {
            System.out.println( arg );
        }
    }
}

タスク:

<target name="run" description="run the project">
    <java dir="${build.dir}" classname="PassFileViaAnt" fork="yes">
        <arg file="${args}" />
    </java>
</target>

指示:

c:\project> ant run -Dargs="foo.txt"

出力:

[java] C:\project\foo.txt

指示:

c:> ant -f c:\project\build.xml run -Dargs="foo.txt"

出力

[java] C:\project\foo.txt
于 2013-03-23T16:53:19.980 に答える