2011-07-06 68 views
0

我想通过我的java程序运行我的Ant脚本即(build.xml文件),以下是mycode的执行运行时CMD

Runtime rt = Runtime.getRuntime(); 
    Process proc = rt.exec("build.xml"); 

的一部分,但我发现了以下错误

java.io.IOException: Cannot run program "build.xml": CreateProcess error=2, The system cannot find the file specified 
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:460) 
    at java.lang.Runtime.exec(Runtime.java:593) 
    at java.lang.Runtime.exec(Runtime.java:431) 
    at java.lang.Runtime.exec(Runtime.java:328) 
    at com.infotech.RunCmd.main(RunCmd.java:12) 
Caused by: java.io.IOException: CreateProcess error=2, The system cannot find the file specified 
    at java.lang.ProcessImpl.create(Native Method) 
    at java.lang.ProcessImpl.<init>(ProcessImpl.java:81) 
    at java.lang.ProcessImpl.start(ProcessImpl.java:30) 
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:453) 
    ... 4 more 

如何解决?

+0

我想你是缺少rt.exec(..)内的一些命令。也许它应该读取rt.exec(“ant [target]”)。就目前而言,你正试图执行一个xml文件。 –

+0

应该不是你想要的东西'进程proc = rt.exec(“PATH/TO/ANT_HOME/ant [选项] [目标[目标2 [目标3] ...]]”);' – Nishant

+0

如果你仍然有问题你可以添加到这个问题,否则请你接受一个答案:) – david99world

回答

0

build.xml实际上是在你运行的目录中,你是否试过将文件目录路径放在rt.exec()中?

+0

是它在同一个应用程序文件夹 – techie

0

您不会从命令行调用“build.xml”,而是会在当前目录中查找“build.xml”的“ant”。因此,改变你的代码(假设蚂蚁发射器是从你的路径访问)来:

Runtime rt = Runtime.getRuntime(); 
Process proc = rt.exec("ant"); 
+0

这里是我的实际代码,仍然iam得到error.Actally我的build.xml,我想运行在以下路径D :蚂蚁\ TRAI;我的Ant_Home在D:apacheant \ bin中 – techie

0

一开始,该可执行ant命令参数build.xml

其次,你需要的,如果构建中使用绝对路径,为您的文件/可执行文件或确保您的运行时环境的目录

1

你应该执行ant -buildfile build.xml,所以使用rt.exec("ant -buildfile build.xml");的build.xml不是命令) .xml不在应用程序文件夹中,您需要提供其实际路径。

0

build.xml不是可执行文件。你将不得不提供完整的命令ant ...
也验证蚂蚁的实际位置和生成