Ant exec - 无法运行程序'start'CreateProcess error = 2

时间:2009-12-17 10:44:49

标签: windows ant exec

我无法使用ant exec运行windows'start'。 Ant版本1.7.1。

以下是重新创建问题的示例build.xml

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

执行此构建文件时出现以下错误:

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运行'start cmd / c notepad'。

有关如何解决此问题的任何建议吗?

欢呼声 一个s

3 个答案:

答案 0 :(得分:14)

start不是可执行文件,而是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”不适用于你的环境,为什么会这样?

答案 1 :(得分:1)

我的解决方案

<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>

答案 2 :(得分:0)

<exec executable="start.exe">怎么样?或者start.bat?

此外,basedir="."指向哪里?如果您在<echo message="basedir = ${basedir}"/>标记之前放置<exec>,是否会打印正确的文件夹(包含“开始”程序的文件夹)?

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