Java - 使用 ProcessBuilder 目录时系统找不到指定的文件()

Java - The system cannot find the file specified when using ProcessBuilder directory()

我正在尝试 运行 Java 中的一个子进程,同时使用 ProcessBuilder 的 directory() 方法。 但是,每当我使用 directory() 方法时,程序都会失败,提示找不到文件。但是,该文件存在于工作目录中。

Process process = new ProcessBuilder("firefox")
                    .directory(new File("C:\Program Files\Mozilla Firefox"))
                    .inheritIO()
                    .start();

输出:

Could not start server due to java.io.IOException: Cannot run program "firefox" (in directory "C:\Program Files\Mozilla Firefox"): CreateProcess error=2, The system cannot find the file specified

当我忽略 directory() 方法并创建 ProcessBuilder 时:new ProcessBuilder("C:\Program Files\Mozilla Firefox\firefox"),它工作正常并且 firefox.exe 成功启动。

这发生在 Windows 和 Linux。

我已经尝试了几个版本的启动命令(如 firefoxfirefox.exe./firefox./firefox.exe)但没有成功。

想通了

我没有意识到 directory() 方法只为新的子进程设置工作目录,你仍然需要为你想要的可执行文件提供完整路径 运行。

在这种情况下,以下代码可以工作:

Process process = new ProcessBuilder("C:\Program Files\Mozilla Firefox\firefox")
                    .directory(new File("C:\Program Files\Mozilla Firefox"))
                    .inheritIO()
                    .start();