2013-05-06 113 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(); 
相关问题