ANT错误CreateProcess error = 2

时间:2016-12-20 10:32:16

标签: ant

当我尝试通过ANT调用简单的JAR文件时。每当我执行时,我都会收到以下错误:

C:\Tools\ANT\apache-ant-1.9.7\bin\ant -buildfile My_Ant.xml

引起:java.io.IOException:CreateProcess error = 2,系统找不到指定的文件         at java.lang.ProcessImpl.create(Native Method)         在java.lang.ProcessImpl。(ProcessImpl.java:385)         在java.lang.ProcessImpl.start(ProcessImpl.java:136)         在java.lang.ProcessBuilder.start(ProcessBuilder.java:1028)         ......还有24个

Java程序只是打印“hello world!”

我用以下方式打电话给ANT:

C:\temp\My>C:\PROGRA~1\Java\jre7\bin\java.exe -jar JavaTest.jar hello from Java

我知道为什么会这样吗?当我通过命令行运行时,我得到了正确的消息。

<?xml version="1.0" encoding="UTF-8"?>
<project name="Issue Management" default="startActivity"  xmlns:if="ant:if" xmlns:unless="ant:unless">
    <property name="javaPath" value="C:\PROGRA~1\Java\jre7\bin\java.exe"/>
    <property name="AnalyzerPath" value="C:\temp\my"/>
    <property name="Analyzer" value="javatest.jar"/>
    <!--Setting the location of ANT Contrib starts 
    <taskdef resource="net/sf/antcontrib/antlib.xml">
         <classpath>
            <pathelement location="C:/Tools/ANT/apache-ant-1.8.2/ant-contrib-1.0b3.jar" />
         </classpath>
    </taskdef>-->
    <tstamp>
        <format property="current.time" pattern="yyyyMMdd_HHmmss" />        
    </tstamp>
    <target name="startActivity">       
        <echo>Issue Management script started at ${current.time}</echo>
        <exec executable="${javaPath} -jar ${AnalyzerPath}\${Analyzer}" resultproperty="BuildErrorCode" failonerror="true" dir="${AnalyzerPath}">            
            <arg value="--help"/>
        </exec>
        <echo>Issue Management script ended at ${current.time}</echo>
    </target>       
</project>

编辑:

Ant脚本:

date

1 个答案:

答案 0 :(得分:2)

executable参数需要设置为的名称或路径可执行文件;命令参数应使用嵌套的<arg>元素单独指定,例如:

<exec executable="${javaPath}" resultproperty="BuildErrorCode"
      failonerror="true" dir="${AnalyzerPath}">  
    <arg value="-jar" />
    <arg value="${AnalyzerPath}\${Analyzer}" />       
    <arg value="--help" />
</exec>

当您将整个命令行指定为可执行文件时,它被视为带有嵌入空格的单个命令,因此未找到:

Cannot run program "C:\PROGRA~1\Java\jre7\bin\java.exe -jar C:\temp\My\javatest.jar"
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^