1

这可能是一个简单的问题,我对 Java 还很陌生,但在我的搜索中,我无法弄清楚为什么这段代码不起作用。

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

我已经阅读了其他类似问题的帖子,并尝试了各种解决方案,但他们使用的修复似乎对我没有任何帮助。我已确认该文件存在,并且在粘贴到命令提示符时从程序反馈的目录执行时它可以正确运行。

4

2 回答 2

1

将代码更改为此,以便仅提取用户名而不是 appdata 路径:

ProcessBuilder getCrafting = new ProcessBuilder("C:\\Users\\" +
    System.getProperty("user.name") + 
    "\\AppData\\Roaming\\ARcraft\\exec\\Minecraft.exe");
getCrafting.start();
于 2013-05-07T01:20:06.467 回答
0

ProcessBuilder命令中应该是 exe 文件的完整路径,然后它将起作用:

 String execLoc = ((System.getenv("APPDATA"))+"\\ARcraft\\exec\\Minecraft.exe");
 ProcessBuilder getCrafting = new ProcessBuilder(execLoc);
 getCrafting.start();
于 2018-12-08T11:58:40.703 回答