java - Process Builder 使用 AppData 文件夹找不到指定的路径

标签 java process processbuilder createprocess

这可能是一个简单的问题,我对 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

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

最佳答案

将代码更改为此,以便仅提取用户名而不是应用程序数据路径:

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

关于java - Process Builder 使用 AppData 文件夹找不到指定的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16408796/

相关文章:

c - 只需检查 c 中的状态过程

java - 下面的代码有什么问题

Java for 循环输出不显示我想要的方式

java - openjdk-11.0.1_linux-x64_bin.tar url 不起作用(https ://download. java.net/java/GA/jdk11/13/GPL/openjdk-11.0.1_linux-x64_bin.tar.gz )

linux - 以编程方式获取另一个进程的父 pid?

c - 如何判断哪个用户启动了这个程序?

java - 使用 Runtime.exec/ProcessBuilder.start 以低优先级启动 Java 进程?

java - 通过 ProcessBuilder 调用脚本和直接通过 JNI 调用 api 哪个更好?

Java:小程序有哪些可用的安全设置

java - 使用 ProcessBuilder 时客户端无法连接 RMI 注册表