2017-04-08 64 views
0

我一直在搞運行一些.exe文件,它似乎有阻止它在appdata中運行它的東西?運行時exec不能在appdata中運行程序?

Runtime.getRuntime().exec(System.getenv("APPDATA") + "test.exe"); 

這是錯誤我得到

java.io.IOException: Cannot run program "C:\Users\Cole": CreateProcess error=2, The system cannot find the file specified 
+0

你不是逃避空間。 – Siguza

+0

有BTW 3相關的問題,擴大了一些答案。 – eckes

回答

1

,因爲它需要操作系統特定轉義,則不應使用普通的exec(String)方法。如果你使用string array version它應該找到可執行文件。

檢查變量是否存在以及是否以\結尾,然後將其與文件名連接起來也是一個好主意。或者更好地使用hierachical文件構造函數:

String appdata = System.getenv("APPDATA"); 
if (appdata == null || appdata.trim().isEmpty()) 
    appdata="."; 
String fileName = new File(appdata, "test.exe").getAbsolutePath(); 
Runtime.getRuntime().exec(new String[]{fileName /*, noargs */}); 
+0

你能舉個例子說明如何做到這一點嗎? –

0

一個簡單的方法是使用File對象構造路徑。

final String f = new File(System.getenv("APPDATA"), "test.exe").toString(); 
final Process p = Runtime.getRuntime().exec(new String[] { f });