使用thrift进行Ant构建失败,原因如下:java.io.IOException:CreateProcess error = 2,系统找不到指定的文件

时间:2013-05-11 13:55:50

标签: ant thrift

我想做的是:

    <exec executable="thrift" dir="${thriftsrc}">
        <arg value="--gen java"/>
        <arg value="-out ${src}"/>
        <arg value="mqlServer.idl"/>
    </exec>

我在C:\ Windows \ System32 \中复制了thrift.exe,因此该文件肯定在PATH中。我已经尝试了几个可执行的参数,完整路径,有和没有.exe但它不适用于任何变体。

但这很有效:

   <exec executable="perl" dir="${generators}">
        <arg value="compactTalib.pl"/>
        <arg value="${talibsrc}"/>
    </exec>

任何想法如何在我的ant构建中调用我的thirft编译器?

2 个答案:

答案 0 :(得分:0)

首先,进入DOS提示符并输入“thrift”。它“有效”吗?我希望它给你一个错误,但至少找到exe。如果找不到exe,请在返回Ant之前解决该问题。

其次,在Ant中回显$ {thriftsrc}。那是C:\ Windows \ System32吗?如果没有,省略dir参数。它是可选的,所以你可以删除它,只需使用路径。

最后,我看到了另一个你尚未遇到的问题。这将作为单个参数“ - gen java”传入。

<arg value="--gen java"/>

doc的相关部分是:

  

是包含a的单个命令行参数   空格字符,不是单独的命令“-l”和“-a”。

答案 1 :(得分:0)

这可能是应该调用thrift命令的方式:

<exec executable="thrift" dir="${thriftsrc}">
    <arg value="--gen"/>
    <arg value="java"/>
    <arg value="-out"/>
    <arg value="${src}"/>
    <arg value="mqlServer.idl"/>
</exec>

另外,请考虑在failonerror任务中添加<exec>

<exec executable="thrift" dir="${thriftsrc}" failonerror="yes">

这将导致Ant脚本以错误消息结束,这将有助于排除故障。