2009-05-22 7 views
7

J'ai l'extrait suivant dans mon script Ant. Il exécute très bien:Exécuter avec Ant fonctionne avec le chemin absolu mais pas le chemin relatif

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

Mais lorsque je tente de l'exécuter en définissant le répertoire, comme ceci:

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

Je reçois:

Exécuter échoué: java.io .IOException: ne peut pas exécuter le programme "programName.exe" (dans le répertoire "C: \ test \ foo"): CreateProcess erreur = 2, le système ne peut pas trouver le fichier SPECIF ied

Aidez-nous! Pourquoi ne fonctionne-t-il pas lorsque le répertoire est spécifié séparément?

+0

'C: \ test \ foo' est pas un chemin relatif. Vous devrez peut-être corriger la question. – Gleb

+0

Modifié. En fin de compte, j'ai besoin de cela pour travailler avec un chemin relatif. Le fait que cela ne marche pas me vexe. – Cuga

Répondre

2

J'ai fini par coller avec ceci:

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

Essayez ceci:

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

Il semble que le répertoire à partir duquel vous exécutez le programme doit être dans votre chemin de construction.

4

Ajouter le resolveexecutable attribut:

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

resolveexecutable Lorsque cet attribut est vrai, le nom de l'exécutable est résolu d'une part sur le projet basedir et si cela ne pas existe, par rapport au répertoire d'exécution si spécifié. Sur les systèmes Unix , si vous souhaitez uniquement autoriser l'exécution des commandes dans le chemin de l'utilisateur, définissez cette valeur sur false. depuis Ant 1.6 Non, par défaut est false

Questions connexes