2009-08-27 12 views
1

Ich möchte das Verfahren mit der folgenden Signatur verwenden:korrekte Syntax für die Verwendung Runtime.exec mit „Program Files“

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

mein Programm Angenommen wird als „myprog.exe“ und es wird bei „C : \ Programme \ Meine Software ". Was ist die korrekte Syntax für die Verwendung von Runtime.exec? Ich bekomme immer eine Fehlermeldung "Das System kann die angegebene Datei nicht finden". Um zu klären, möchte ich beginnen myprog.exe aus dem Verzeichnis „C: \ Program Files \ My Software“ und nicht von wo aus das Java-Programm läuft

Antwort

2

ich empfehlen würde, die anderen Geschmack von exec() anstelle:

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

Mit dieser Methode können Sie den vollständigen Pfad zur ausführbaren Datei in cmdarray[0] und die Befehlsargumente (falls vorhanden) in nachfolgenden Array-Elementen übergeben. Dies ist robuster als das Behandeln von Zitaten oder Entweichen oder was immer Sie tun müssen, um es mit dem vereinfachten exec() arbeiten zu lassen.

Um den anderen Teil Ihrer Frage zu beantworten, müssen Sie den Pfad passieren, wo Sie Ihr Programm ("C:\\Program Files\\My Software") im dir Parameter des oben exec() Aufruf gestartet werden soll. Beachten Sie auch, dass ich \\ im Pfadnamen verwendet habe, da Java \ als Escape-Zeichen verwendet, was bedeutet, dass Sie zwei in einer literalen Zeichenfolge verwenden müssen, die einen Pfadnamen darstellt.

Verwandte Themen