我使用Eclipse将文件“testFile.txt”作为参数传递给我的Java程序,当我选择正常运行时,它可以正常工作。如果我在Eclipse中运行Ant build.xml并将“testFile.txt”设置为参数,则会收到错误:
建立失败 目标“testFile.txt”在项目“MyProj1”中不存在。
如果我使用Ant并使用以下行在Linux shell中传递文件:
ant -Dargs="testFile.txt" run
它传递String值“testFile.txt”但找不到相应的文件。该文件位于MyProj1文件夹中,该文件夹是src和build.xml所在的位置。我是否需要移动.txt文件或修改构建文件?如果我必须修改构建文件,我需要什么?
<target name="run" depends="compile" description="run the project">
<java dir="${build.dir}" classname="${main.class}" fork="yes">
<arg line="${args}"/>
</java>
</target>
答案 0 :(得分: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