2009-05-22 14 views
7

Tengo el siguiente fragmento en mi script Ant. Se ejecuta muy bien:Ejecutar con Ant funciona con ruta absoluta, pero no ruta relativa

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

Pero cuando intento ejecutarlo mediante el establecimiento del directorio, así:

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

me sale:

Ejecutar fallado: java.io .IOException: No se puede ejecutar el programa "nombrePrograma.exe" (en el directorio "C: \ test \ foo"): CreateProcess error = 2, el sistema no puede encontrar el archivo especificado ied

¡Ayuda! ¿Por qué no funciona cuando el directorio se especifica por separado?

+0

'C: \ test \ foo' no es una ruta relativa. Es posible que deba corregir la pregunta. – Gleb

+0

Editado. Al final, necesito que esto funcione con una ruta relativa. El hecho de que esto no funcione me deja boquiabierto. – Cuga

Respuesta

2

terminé pegando con esto:

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

Prueba esto:

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

Parece ser que el directorio desde el que se ejecuta el programa debe estar en su ruta de compilación.

4

Añadir el atributo resolveexecutable:

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

resolveexecutable Cuando este atributo es cierto, el nombre de la ejecutable se resuelve en primer lugar contra la basedir proyecto y si eso no existir, contra el directorio de ejecución , si está especificado. En los sistemas Unix , si solo desea permitir la ejecución de los comandos en la ruta del usuario, establezca esto en falso. desde Ant 1.6 No, por defecto es falso

Cuestiones relacionadas