I want to run my Ant script i.e (build.xml) through my java program , following is part of mycode
Runtime rt = Runtime.getRuntime();
Process proc = rt.exec("build.xml");
but I'm getting the following error
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
How to solve it?
4 Answers 4
You should execute ant -buildfile build.xml, so use rt.exec("ant -buildfile build.xml"); (build.xml is not a command) if build.xml is not in the application folder, you will need to give its actual path.
Comments
Is build.xml actually in the directory you are running from, have you tried putting the file directory path in rt.exec()?
Comments
You do not invoke "build.xml" from command line, but "ant" that looks for a "build.xml" in your current directory. So change your code (assuming ant launcher is accessible from your PATH) to:
Runtime rt = Runtime.getRuntime();
Process proc = rt.exec("ant");
1 Comment
For a start, the executable is ant. The command parameter is build.xml.
Secondly, you need to use absolute paths for your files/executables or be sure of your runtime environment's directory
Process proc = rt.exec("PATH/TO/ANT_HOME/ant [options] [target [target2 [target3] ...]]");