antexec – 不能运行程序“开始”CreateProcess错误= 2

我不能使用ant exec运行口“开始”。 Ant版本1.7.1。

这里是示例build.xml来重新创build问题

<project name="test" basedir="." default="test-target"> <target name="test-target"> <exec executable="start"> <arg line="cmd /c notepad" /> </exec> </target> </project> 

当我执行这个构build文件时得到以下错误:

 Execute failed: java.io.IOException: Cannot run program "start": Cre ateProcess error=2, The system cannot find the file specified 

我的环境是Windows XP,Ant 1.7.1我想从DOS提示符下运行。 我排除任何PATH相关的问题,因为我可以从DOS Promt手动运行“启动cmd / c记事本”。

对于如何解决这个问题,有任何的build议吗?

欢呼声

启动不是一个可执行文件,而是cmd.exe shell的一个内部命令,所以要启动你必须做的事情:

 <exec executable="cmd.exe"> <arg line="/c start notepad" /> </exec> 

编辑:

为了产生多个窗口,这应该工作:

 <target name="spawnwindows"> <exec executable="cmd.exe" spawn="yes"> <arg line="/c start cmd.exe /k echo test1" /> </exec> <exec executable="cmd.exe" spawn="yes"> <arg line="/c start cmd.exe /k echo test2" /> </exec> </target> 

但是你提到spawn =“true”不适用于你的环境,为什么?

我的解决方案

 <project name="test" basedir="." default="test-target"> <target name="start-init"> <exec executable="where" outputproperty="START"> <arg line="start" /> </exec> </target> <target name="test-target"> <exec executable="${START}"> <arg line="cmd /c notepad" /> </exec> </target> </project> 

那么<exec executable="start.exe">呢? 或者start.bat?

另外, basedir="." 指向? 如果你在你的<exec>标签之前放置一个<echo message="basedir = ${basedir}"/> ,它是否会打印正确的文件夹(包含“start”程序的文件夹)?

另外,您可以在<exec>之前添加<echoproperties /> <exec>来查看所有可见的属性。