2009-08-27 2 views
1

Je souhaite utiliser la méthode avec la signature suivante:La syntaxe correcte pour l'utilisation Runtime.exec avec « Program Files »

exec(String command, String[] envp, File dir) 

mon programme Supposons appelé « monprog.exe » et il est situé à « C : \ Program Files \ Mon logiciel ". Quelle est la syntaxe correcte pour utiliser Runtime.exec? Je reçois toujours un message d'erreur "Le système ne trouve pas le fichier spécifié". Pour que je souhaite préciser à monprog.exe commencer à partir du répertoire « C: \ Program Files \ My Software » et non d'où le programme Java est en cours d'exécution

Répondre

2

Je recommande d'utiliser l'autre saveur de la place exec():

exec(String[] cmdarray, String[] envp, File dir) 

En utilisant cette méthode, vous pouvez transmettre le chemin complet à l'exécutable dans cmdarray[0] et les arguments de commande (le cas échéant) dans les éléments de tableau suivants. Ceci est plus robuste que de traiter le devis ou l'échappement ou tout ce que vous pourriez avoir à faire pour le faire fonctionner avec le exec() simpliste.

Pour répondre à l'autre partie de votre question, assurez-vous de passer le chemin où vous voulez commencer votre programme ("C:\\Program Files\\My Software") dans le paramètre dir de l'appel exec() ci-dessus. Notez également que j'ai utilisé \\ dans le chemin parce que Java utilise \ comme caractère d'échappement, ce qui signifie que vous devez utiliser deux dans une chaîne littérale représentant un chemin d'accès.