2009-05-22 16 views
7

Ho il seguente frammento nel mio script Ant. Esegue bene:Esegui con Ant funziona con percorso assoluto ma non percorso relativo

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

Ma poi quando provo ad eseguirlo impostando la directory, in questo modo:

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

ottengo:

Esegui fallito: java.io .IOException: Impossibile eseguire il programma "programName.exe" (nella directory "C: \ test \ foo"): Errore CreateProcess = 2, il sistema non riesce a trovare il file specif ied

Si prega di aiuto! Perché non funziona quando la directory viene specificata separatamente?

+0

'C: \ test \ foo' non è un percorso relativo. Potrebbe essere necessario correggere la domanda. – Gleb

+0

Modificato. Alla fine ho bisogno di questo per lavorare con un percorso relativo. Il fatto che questo non funzioni mi fa impazzire. – Cuga

risposta

2

ho finito per attaccare con questo:

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

Prova questa:

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

Sembra che la directory da cui si esegue il programma deve essere nel vostro percorso di generazione.

4

aggiungere l'attributo resolveexecutable:

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

resolveexecutable Quando questo attributo è vero, il nome del eseguibile viene risolta in primo luogo contro il progetto basedir e se questo non fa esiste, contro la directory di esecuzione se specificato. Sui sistemi Unix , se si desidera solo consentire l'esecuzione dei comandi nel percorso dell'utente , impostarlo su falso. poiché Ant 1.6 No, predefinito è false

Problemi correlati