【问题标题】:Execute with Ant works with absolute path but not relative path使用 Ant 执行适用于绝对路径,但不适用于相对路径
【发布时间】:2010-10-28 08:38:57
【问题描述】:

我的 Ant 脚本中有以下 sn-p。它执行得很好:

<exec executable="C:\test\foo\programName.exe" />

但是当我尝试通过设置目录来执行它时,像这样:

<exec executable="programName.exe"
  dir="C:\test\foo\" />

我明白了:

执行失败:java.io.IOException: 无法运行程序“programName.exe” (在目录“C:\test\foo”中): CreateProcess 错误=2,系统 找不到指定的文件

请帮忙!单独指定目录为什么不起作用?

【问题讨论】:

  • 'C:\test\foo' 不是相对路径。您可能需要更正问题。
  • 已编辑。最后,我需要它来处理相对路径。这不起作用的事实让我大吃一惊。

标签: java ant relative-path absolute-path


【解决方案1】:

我最终还是坚持了下来:

<exec executable="${basedir}\myexefile.exe}" />

【讨论】:

    【解决方案2】:

    添加resolveexecutable属性:

    <exec executable="programName.exe" 
      resolveexecutable="true"
      dir="C:\test\foo\" />
    

    resolveexecutable 当这个 属性为真,名称 可执行文件首先针对 基于项目的项目,如果确实如此 不存在,反对执行 目录(如果指定)。在 Unix 上 系统,如果您只想允许 执行用户的命令 路径,将此设置为false。从蚂蚁 1.6 否,默认为 false

    【讨论】:

      【解决方案3】:

      试试这个:

      <property name="prog.dir" value="C:/test/foo" />
      <exec executable="${prog.dir}/programName.exe"/>
      

      您执行程序的目录似乎必须在您的构建路径中。

      【讨论】:

        猜你喜欢
        • 2011-07-12
        • 2011-06-08
        • 2012-08-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多