2013-05-06 560 views
0

這可能是一個簡單的問題,我對Java相當陌生,但在我的搜索中,我一直無法弄清楚爲什麼這段代碼無法正常工作。Process Builder找不到指定的路徑,使用AppData文件夾

String execLoc = ((System.getenv("APPDATA"))+"\\ARcraft\\exec\\"); 

ProcessBuilder getCrafting = new ProcessBuilder("Minecraft.exe"); 
getCrafting.directory(new File(execLoc)); 
getCrafting.start(); 

當我運行此,我回來:

Cannot run program "Minecraft.exe" 
(in directory "C:\Users\andrew\AppData\Roaming\ARcraft\exec"): 
CreateProcess error=2, The system cannot find the file specified 

我讀過其他職位有類似的問題,並嘗試了多種解決方案,但它們使用不似乎修復程序爲我做任何事情。我已經確認該文件存在,並且它在從命令提示符粘貼的程序反饋的目錄中執行時正確運行。

+0

如果你能保證'C:\用戶\安德魯\應用程序數據\漫遊\ ARcraft \ EXEC \我的世界.exe'存在,那麼它必須是一個權限問題。也許你應該嘗試以管理員身份運行你的程序。用戶文件夾通常具有有限的權限... – 2013-05-06 23:43:28

+0

您是否嘗試過使用'ProcessBuilder getCrafting = new ProcessBuilder(「C:\ Users \ andrew \ AppData \ Roaming \ ARcraft \ exec \ Minecraft.exe」);'而不是 – MadProgrammer 2013-05-06 23:45:10

+0

@MadProgrammer '必須是ProcessBuilder(「C:/Users/andrew/AppData/Roaming/ARcraft/exec/Minecraft.exe」); (首選)或ProcessBuilder(「C:\\ Users \\ andrewrew \\ AppData \\ Roaming \\ ARcraft \\ exec \\ Minecraft.exe」); – GreyBeardedGeek 2013-05-07 00:24:33

回答

0

修改代碼,這一點是爲了只拉的用戶名,而不是應用程序數據路徑:

ProcessBuilder getCrafting = new ProcessBuilder("C:\\Users\\" + 
    System.getProperty("user.name") + 
    "\\AppData\\Roaming\\ARcraft\\exec\\Minecraft.exe"); 
getCrafting.start(); 
相關問題