Выполнение с помощью Ant работает с абсолютным путем, но не с относительным путем - PullRequest
7 голосов
/ 23 мая 2009

У меня есть следующий фрагмент в моем скрипте Ant. Работает просто отлично:

<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, система не могу найти указанный файл

Пожалуйста, помогите! Почему он не работает, если каталог указан отдельно?

Ответы [ 3 ]

4 голосов
/ 23 мая 2009

Добавьте атрибут resolexecutable :

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

resolexecutable Когда это атрибут является истинным, имя исполняемый файл разрешается в первую очередь против основанный на проекте, и если это делает не существует, против казни каталог, если указан. В Unix системы, если вы только хотите разрешить выполнение команд у пользователя путь, установите это в ложь. начиная с Ant 1.6 Нет, по умолчанию false

2 голосов
/ 28 мая 2009

Я закончил придерживаться этого:

<exec executable="${basedir}\myexefile.exe}" />
1 голос
/ 23 мая 2009

Попробуйте это:

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

Похоже, что каталог, из которого вы запускаете программу, должен находиться в вашем пути сборки.

...